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"来控制,以秒为单位,如果白天、夜间、工作日、节假日分别有不同的要求,官方插件并不支持,需要自己写代码来实现;

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180723G1726700?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券