log4js-node配置

Posted 瓦力爸爸

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了log4js-node配置相关的知识,希望对你有一定的参考价值。

Category:

  • 是指对日志进行分类,category的名字即是日志分类的标签,比如按模块进行分类“database”、“auth”;

  • 同一个分类的日志,使用相同的appenders,因为category中指定了appender;

  • 必须定义一个名为"default"的分类,用来将无法匹配的请求指向此默认分类;

  • category的名称会出现在具体日志中;

  • category支持简单的层级,通过英文句号来识别层级。举例:如果代码中将日志归类到"app.submodule",而执行时发现没有此category的定义,系统会自动寻找其上一级分类"app"并将日志记录到此分类下,如果上一级分类也不存在,系统则按你要求的名字自动创建分类,appender将会是默认的default,如:log4js.getLogger('somecategory')

  • category是对日志按重要级别、系统模块等进行分类,真正决定日志格式、保存类型的是appender;

Appenders

  • datefile:

    • 用于按日期时间对日志进行分割记录,而不按文件大小;

    • 需要在应用停止时调用log4js.shutdown,以确保所有异步写入(node.js的特性)的数据能够完成执行;

    • "filename":是指日志文件存储的路径和文件名;

    • "pattern":采用标准的日期格式,按分钟记录的格式是"yyyy-MM-dd-hh-mm",一般按天或者小时记录足矣;

    • 默认当前正在记录的日志文件名与"filename"中设置的文件名相同,如果指定的时间周期结束,这个日志文件会被重名为"filename"+"pattern",作为备份。例如:"app.log"在备份时将被命名为"app.log.2018-04-30"

    • "alwaysIncludePattern":默认值false,如果设为true,则当前正在记录的日志文件也会命名为"filename"+"pattern";

    • "daysToKeep":决定了备份文件的存放天数,超过了将自动删除,默认值0代表永久保存;

    • "encoding":文件编码,默认"utf-8",一般不用赋值;

    • "compress":是否压缩备份文件,默认false,设为true时将采用gz格式进行压缩;

    • "keepFileExt":是否在重命名备份文件时保留扩展名,默认为false,设为true时备份文件将被命名为"app.2018-04-30.log"而不是"app.log.2018-04-30";

  • file:

    • 用于按文件大小来对日志进行记录和分割,并允许最多生成多少个备份文件;

    • 需要在应用停止时调用log4js.shutdown,以确保所有异步写入(node.js的特性)的数据能够完成执行;

    • "filename":是指日志文件存储的路径和文件名;

    • "maxLogSize":日志文件的最大字节数,int值,如果不赋值所有日志将不断累加到一个文件上,不推荐。举例:10M的值是10485760,20M的数值是:20971520;

    • "backups":要保留的备份文件个数,int值,默认5,超过后新的备份文件会替换掉最早的备份。备份文件的命名格式为"filename"+数字,例如"app.log.1";

  • fileSync:与"file"的唯一差别在于日志是强制同步写入的,适用于日常调试,生产环境不建议使用,同步会导致性能下降;

  • logLevelFilter:

    • 事件级别过滤器,强制某个appender记录指定级别范围的事件,比如把某些严重错误记录到独立的文件或者通过邮件发出通知;

    • "appender": 需要加载过滤器的appender的名称,必须是已经定义过的appender;

    • "level":需要过滤的最低事件级别,比如:"WARN",无默认值;

    • "maxLevel":需要过滤的最高事件级别,默认:"FATAL";

  • multiFile:

    • 将不同类型的事件记录到不同的文件,产生多个使用中的日志文件。是一种将日志按"category"进行分类记录的方法。作为"file"类型appender的扩展,支持"file"的属性,比如通过"maxLogSize"对文件进行分割;

    • "base":日志存储的路径和文件名中固定的值,例如:"logs/"指定了目录路径,"logs/app"指定了目录路径和部分文件名;

    • "property":用于将日志拆分成多个文件的特征,以官方示例所示目前最适用的是"categoryName",也可以是"pid","level";

    • "extension":文件的后缀,后缀名前需要加英文句号,例如:".log";

    • "timeout":选填,int值,代表多少ms后自动关闭日志文件的写入,官方没提默认值是多少;

  • recording:将日志记录到内存中,不产生日志文件,主要用于测试。日志以数组的形式在内存中存储,所有使用该appender的实例都共享这个数组。具体见官方文档:https://log4js-node.github.io/log4js-node/recording.html

  • tcp & tcp-server:主要用于多台服务器时,同步日志到master,交互的数据要求必须是JSON格式的字符串。具体见官方文档:https://log4js-node.github.io/log4js-node/tcp.html

  • smtp:

    • 将日志通过邮件发送指定收件人,同样需要在应用停止时调用log4js.shutdown;

    • 需要单独安装npm模块"@log4js-node/smtp";

    • 详见介绍见官方文档:https://github.com/log4js-node/smtp

    • 团队开发时,不同的日志需要发送给不同的人,可以通过category来控制;

    • 发送间隔只有一个属性"sendInterval"来控制,以秒为单位,如果白天、夜间、工作日、节假日分别有不同的要求,官方插件并不支持,需要自己写代码来实现;


以上是关于log4js-node配置的主要内容,如果未能解决你的问题,请参考以下文章

最新的 log4j (5.1.0)剖析开篇

[放假啦]最新的 log4j (5.1.0)剖析开篇

Dubbo配置设计

(4.19)SQL server 2008一些常见配置之一(基本配置,权限配置远程访问配置和内存配置。)

Tomcat卷五---Web 应用配置,管理配置和JVM配置

SpringBoot:配置文件的作用配置文件的格式properties配置文件yml配置文件