fix: ensure logger cleanup properly orders list before deleting files (#22101)

This commit is contained in:
Aiden Cline
2026-04-11 22:07:34 -05:00
committed by GitHub
parent c1ddc0ea2d
commit fc01cad2b8
2 changed files with 50 additions and 9 deletions

View File

@@ -3,7 +3,6 @@ import fs from "fs/promises"
import { createWriteStream } from "fs"
import { Global } from "../global"
import z from "zod"
import { Glob } from "./glob"
export namespace Log {
export const Level = z.enum(["DEBUG", "INFO", "WARN", "ERROR"]).meta({ ref: "LogLevel", description: "Log level" })
@@ -15,6 +14,8 @@ export namespace Log {
WARN: 2,
ERROR: 3,
}
const keep = 10
const rx = /^\d{4}-\d{2}-\d{2}T\d{6}\.log$/
let level: Level = "INFO"
@@ -78,15 +79,11 @@ export namespace Log {
}
async function cleanup(dir: string) {
const files = await Glob.scan("????-??-??T??????.log", {
cwd: dir,
absolute: true,
include: "file",
})
if (files.length <= 5) return
const files = (await fs.readdir(dir).catch(() => [])).filter((file) => rx.test(file)).sort()
if (files.length <= keep) return
const filesToDelete = files.slice(0, -10)
await Promise.all(filesToDelete.map((file) => fs.unlink(file).catch(() => {})))
const doomed = files.slice(0, -keep)
await Promise.all(doomed.map((file) => fs.unlink(path.join(dir, file)).catch(() => {})))
}
function formatError(error: Error, depth = 0): string {