按照文档介绍numBackups是允许的旧日志文件数量,实际使用中,确实有些配置是按这个定义表现的,但是也存在没有按这个定义表现的,我看了半天没有发现有什么区别,奇怪了。不知道是log4js的bug还是怎样,看看下面这段示例代码:
const log4js = require('log4js');
log4js.configure({appenders: {Test: { type: "dateFile", filename: "logs/test.log", pattern: 'yyyy-MM-dd',alwaysIncludePattern: true,keepFileExt:true,numBackups: 2,layout: { type: "pattern", pattern: "%d %p %c %m%n" },},},categories: { default: { appenders: ["Test"], level: "info" }, },});
var logger = log4js.getLogger("Test");
logger.info("记录一下")
按说logs/下最多存在3个test.yyyy-MM-dd.log的文件,但是似乎并没有受到限制,旧的文件并没有被删除掉。记录下备忘,node版本v20.12.0 LTS log4js版本6.9.1。
后记:估计是找到原因了,日志文件创建和删除的逻辑跟我想象的不一样:在同一个进程实例中,日志是按这个逻辑执行的,如果进程实例重新执行,那么硬盘上已经存在的文件跟这个numBackups设定就没有什么关系了,它只管本次这个实例创建的日志文件。