log4js 将日志输出到文件
log4js 提供了很多种日志的输出场景,包括
- DateFile:日志输出到文件,日志文件可以安特定的日期模式滚动,例如今天输出到 default-2016-08-21.log,明天输出到 default-2016-08-22.log;
- SMTP:输出日志到邮件;
- Mailgun:通过 Mailgun API 输出日志到 Mailgun;
- levelFilter 可以通过 level 过滤;
- console 控制台
这里主要讲一下日志输出到文件的具体配置。
先看一个log4js输出文件的例子:
var log4js = require('log4js');
log4js.configure({
appenders: {
production: {
type: 'dateFile',
filename: 'demo.log'
}
},
categories: {
default: { appenders: [ 'production' ], level: 'debug' }
}
});
var logger = log4js.getLogger();
logger.info('this is a info');
执行代码,会在当前目录下生成一个叫demo.log
的日志文件,
内容如下
[2019-08-26T17:27:03.355] [INFO] default - this is a info
想要灵活使用它,需要了解dateFile的各个配置项的含义
type
日志输出类型
filename: string
日志文件的路径,注意这里是路径而不是文件名。
encoding: string
日志编码格式,默认utf-8
mode: integer
用来设置日志文件的权限,默认0o644 意思是对所有者有读写权限,对其他用户和用户组只读。
具体含义可以参照nodejs文档:
flags: string
是nodejs 读写文件的配置位,默认为a,表示打开文件,并接着上一条写入到同一个文件中。
具体含义可以参考官方文档
compress: boolean
表示是否压缩日志,默认false。压缩之后会已.gz作为后缀
alwaysIncludePattern: boolean
日志文件是否始终展示预设的pattern。
默认值为false。
以demo为例,日志在初始生成时,日志名称会叫demo.log
把时间调到第二天,再执行此代码,会生成一个文件名为demo.log.2019-08-26
的日志文件,记录着昨天的日志。同时新创建一个demo.log 文件,用于记录当天的日志。
如果需要每个日志文件名都带有时间,可以把这个属性设置为true,效果如下
新生成一个带日期格式的日志文件demo.log.2019-08-26
daysToKeep: integer
日志保存的时间。单位为天。默认值为0,表示一直保存。
keepFileExt: boolean
日志文件是否始终保持后缀,默认为false。如上demo所示,日志文件名demo.log.2019-08-26
,如果始终让log放在最后端,可以设置true,则日志文件边为demo.2019-08-26.log
完整示例如下
var log4js = require('log4js');
log4js.configure({
appenders: {
production: {
type: 'dateFile',
filename: 'demo.log',
alwaysIncludePattern: true,
keepFileExt: true,
daysToKeep: 30,
}
},
categories: {
default: { appenders: [ 'production' ], level: 'debug' }
}
});
var logger = log4js.getLogger();
logger.info('this is a info');