当前位置: 首页 > 工具软件 > log4js > 使用案例 >

log4js的配置难点解析

强硕
2023-12-01

log4js整体配置相对比较简单,但部分配置容易混淆,网上的说法也不经相同,以下根据自己实践与理解记录一下。


1、type:console

将日志输出至控制台,这样可以方便开发人员在开发时接看到所有日志信息,在其他环境不建议设置

2、alwaysIncludePattern

如果为true,则每个文件都会按pattern命名,否则最新的文件不会按照pattern命名
3、replaceConsole
如果为true,则程序中用console.log输出到控制台的信息,也会输出到日志文件中,且格式按照log4js的格式输出,如果为false,则console.log只会输出在控制台。与type:console的appender正好相反,如果设置了type:console,则会将log4js.log日志输出至控制台。
4、category
没有看到权威的说明,我的理解category就是一个日志名字,如果没有取应该是默认的。只有当开发人员通过getLogger(category)获得相对应的日志时,才能输出到对应的appender中,否则会发送给所有默认的appender
5、logLevelFilter
没有看到什么文档说明,但实际的例子还是不少,直观理解应该就是根据日志级别进行日志过滤。

因为nodejs应用本身较小,所以不建议建立过多的category。我在自己的应用中配置如下:
开发环境:
{
    "appenders": [{
        "type": "console"
    }, {
        "type": "dateFile",
        "filename": "./log/stats",
        "pattern": ".dd.log",
        "alwaysIncludePattern": true,
        "category": "stats",
        "level" : "INFO"
    }, {
        "type": "file",
        "filename": "./log/app.log",
        "maxLogSize": 2048000,
        "numBackups": 10,
        "level" : "DEBUG"
    }, {
        "type": "logLevelFilter",
        "level": "WARN",
        "appender": {
            "type": "dateFile",
            "filename": "./log/errors",
            "pattern": ".dd.log",
            "alwaysIncludePattern": true
        }
    }],
    "replaceConsole": true
}
1)stats用于一些统计日志,按天记录;
2)app用于记录应用日志,按大小划分;
3)errors日志用于快速发现错误,是一个日志层级过滤器,该日志按日统计。


生成环境比开发环境少一个console,app.log日志等级设置为INFO

 类似资料: