nodejs log4js切割日志会导致历史日志被删

每天切割日志导致历史日志被删除,而且切割的日志压缩包名称也不对,后缀中多了一个点
image.png
配置如下

const log4js = require("log4js");
const Path = require('path');
const filename_path = Path.resolve(__dirname, `../../logs/info.log`);
log4js.configure({
  appenders: {
    cheess: {
      type: "dateFile",
      filename: filename_path,
      pattern: '.yyyy-MM-dd',
      compress: true,
      level:'info'
    },
    'out': { type: 'stdout' }
  },
  categories: {
    default: {
      appenders: ['cheess', 'out'],
      level: 'info',
    },
  }
});
module.exports = log4js.getLogger('cheess')

同一个配置一个项目是好的,一个项目就有问题

阅读 3.4k
3 个回答
  1. cheess里面没有配置numBackups,缺省是1,所以只保留一个gz文件(除了当前正在写入的未压缩的hotfile)
  2. pattern: '.yyyy-MM-dd',这个地方不需要起始的dot,'yyyy-MM-dd'即可。

已参与了 SegmentFault 思否社区 10 周年「问答」打卡 ,欢迎正在阅读的你也加入。

新手上路,请多包涵

查看你的log4js版本是否 6.5.* 或以上了,如果是,你不妨装回 6.3.0版本的log4js,亲测解决分包覆盖问题。

不需要降低log4版本
log4日志库引用streamroller这个库的原因
把这个库换回2.2.4版本就可以了
这个问题坑死人,好多日志文件都被删除了

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题