fix: 日志系统修复

- userId 延迟到 finish 事件获取(authMiddleware 已执行)
- 日志记录 UTC 时间戳,支持前端按用户时区显示
- 日期筛选和级别筛选 watch 监听修复
- 添加 showDatePicker 变量定义
This commit is contained in:
2026-06-08 15:06:29 +08:00
parent 860c599b7c
commit 162f2dc89c
2 changed files with 13 additions and 7 deletions

View File

@@ -23,9 +23,11 @@ function formatTime(date: Date): string {
function writeLog(level: string, message: string, meta?: Record<string, any>) {
const dateStr = getDateStr()
const logFile = path.join(LOG_DIR, `${dateStr}.log`)
const time = formatTime(new Date())
const now = new Date()
const time = formatTime(now)
const timestamp = now.toISOString() // 记录 UTC 时间戳,前端可按用户时区显示
const metaStr = meta ? ` ${JSON.stringify(meta)}` : ''
const line = `[${time}] ${level} ${message}${metaStr}\n`
const line = `[${time}] [${timestamp}] ${level} ${message}${metaStr}\n`
fs.appendFile(logFile, line, (err) => {
if (err) console.error('[Logger] Write error:', err)
@@ -37,13 +39,12 @@ export function requestLogger(req: Request, res: Response, next: NextFunction) {
const startTime = Date.now()
const { method, url, ip } = req
// 提取用户 ID如果有 auth 中间件设置
const userId = (req as any).userId
// 响应结束时记录日志
// 响应结束时记录日志(此时 authMiddleware 已执行userId 可用
res.on('finish', () => {
const duration = Date.now() - startTime
const { statusCode } = res
// 延迟获取 userId确保 authMiddleware 已执行
const userId = (req as any).userId
const meta = {
method,