mirror of
https://gitea.toothfairyai.com/ToothFairyAI/tf_code.git
synced 2026-04-10 10:48:45 +00:00
41 lines
1018 B
TypeScript
41 lines
1018 B
TypeScript
import log from "electron-log/main.js"
|
|
import { readFileSync, readdirSync, statSync, unlinkSync } from "node:fs"
|
|
import { dirname, join } from "node:path"
|
|
|
|
const MAX_LOG_AGE_DAYS = 7
|
|
const TAIL_LINES = 1000
|
|
|
|
export function initLogging() {
|
|
log.transports.file.maxSize = 5 * 1024 * 1024
|
|
cleanup()
|
|
return log
|
|
}
|
|
|
|
export function tail(): string {
|
|
try {
|
|
const path = log.transports.file.getFile().path
|
|
const contents = readFileSync(path, "utf8")
|
|
const lines = contents.split("\n")
|
|
return lines.slice(Math.max(0, lines.length - TAIL_LINES)).join("\n")
|
|
} catch {
|
|
return ""
|
|
}
|
|
}
|
|
|
|
function cleanup() {
|
|
const path = log.transports.file.getFile().path
|
|
const dir = dirname(path)
|
|
const cutoff = Date.now() - MAX_LOG_AGE_DAYS * 24 * 60 * 60 * 1000
|
|
|
|
for (const entry of readdirSync(dir)) {
|
|
const file = join(dir, entry)
|
|
try {
|
|
const info = statSync(file)
|
|
if (!info.isFile()) continue
|
|
if (info.mtimeMs < cutoff) unlinkSync(file)
|
|
} catch {
|
|
continue
|
|
}
|
|
}
|
|
}
|