diff options
Diffstat (limited to 'packages/desktop-electron/src/main/logging.ts')
| -rw-r--r-- | packages/desktop-electron/src/main/logging.ts | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/packages/desktop-electron/src/main/logging.ts b/packages/desktop-electron/src/main/logging.ts new file mode 100644 index 000000000..d315b2d34 --- /dev/null +++ b/packages/desktop-electron/src/main/logging.ts @@ -0,0 +1,40 @@ +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 + } + } +} |
