You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

配置numBackups为90但PM2日志仅保留5天就丢失问题求助

日志丢失问题根因及修复方案

核心原因

你遇到的日志仅保留5天的问题由两个配置错误共同导致:

  1. log4js配置项错误:
    • 你使用了普通file类型的appender,该类型不支持按日期滚动归档,仅支持按文件大小滚动,pattern参数完全不生效。
    • numBackups参数你填了字符串类型的"90",该参数要求为数字类型,类型不匹配时log4js会自动降级使用默认值5,对应恰好只保留5份备份日志。
  2. PM2启动参数与log4js冲突:
    你在PM2启动命令中指定了--log log/app.log,该参数会让PM2将进程的标准输出、错误输出同时写入log/app.log文件,和log4js的日志写入目标完全一致,多进程同时写同一个文件会导致log4js的归档逻辑识别文件异常,旧日志会被错误清理。

修复步骤

  • 修正log4js.json配置:将appender类型改为dateFile,numBackups改为数字类型,示例配置如下:
{
    "appenders": {
        "server": {
            "type": "dateFile",
            "filename": "log/app.log",
            "pattern": "yyyy-MM-dd",
            "numBackups": 90,
            "compress": true
        }
    },
    "categories": {
        "default": {
            "appenders": [
                "server"
            ],
            "level": "DEBUG"
        }
    }
}
  • 修改PM2启动命令,移除--log参数,避免PM2和log4js同时写入同一个日志文件:
pm2 start server.js --name app_server --time
  • 重启服务生效:先删除现有log目录下的旧日志文件,执行pm2 delete app_server停止原有服务,再用修正后的命令启动服务即可。

补充说明

如果你需要保留PM2自身的进程日志,只需将PM2的日志输出路径和log4js的日志路径设置为不同值即可,不要共用同一个文件避免冲突。

内容的提问来源于stack exchange,提问作者user1291453

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.09 01:39:01