node日志管理-log4js

背景

之前使用koa写了一个服务接口。目前要加一个日志管理。网上看了看,log4js使用频率较高,就选了这个来进行日志管理。

安装

1
npm install log4js --save

配置

根目录新建logger.js,分了两种类型:消息日志和错误日志,为了区分,方便查找日志,分别打到不同的文件。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
const log4js = require('log4js')
const path = require('path')
log4js.configure({
appenders: {
info: { //访问日志
type: 'file',//文件类型
filename: path.join('logs/', 'info.log'), //输出到目录并指定文件名
maxLogSize: 10485760,//最大10M
backups: 20, //保留最近的20个文件
alwaysIncludePattern: true, //使用配置的patter格式
pattern: 'yyyy-MM-dd.log', //文件名格式
compress: true //超过限制,自动压缩
},
error: { //响应日志
type: 'file',
filename: path.join('logs/', 'error.log'),
maxLogSize: 10485760,
backups: 20,
alwaysIncludePattern: true,
pattern: 'yyyy-MM-dd.log',
compress: true
},
console: {
type: 'console'
}
},
categories: {
default: { appenders: ['console'], level: 'info' }, //默认级别info
info: { appenders: ['info'], level: 'info' },
error: { appenders: ['error'], level: 'error' }
}
})
exports.info = log4js.getLogger('info')
exports.error = log4js.getLogger('error')

使用

1
2
3
const { info, error } = require('../logger')
info.info('消息日志')
error.info('错误日志')

自定义日志模版

也可以使用自定义模版。根据公司业务需要的日志字段来配置

1
2
3
4
5
6
7
8
9
10
11
12
13
log4js.addLayout('json', function(config) {
return function(logEvent) { return JSON.stringify(logEvent); }
});

// logEvent对象里, 可以自由配置想要的自定义字段。
LoggingEvent {
startTime: 2019-07-22T15:57:50.033Z,
categoryName: '[logs]',
data: [ '请求失败' ],
level: Level { level: 40000, levelStr: 'ERROR', colour: 'red' },
context: {},
pid: xxxx } {}
}

吐槽一下

我的领导目前都没给我要配置哪些个字段,一个需求总是不能给你一次性完整的说清楚,感觉他是个很不称职的领导,只会闷声写自己的代码,不懂得换位思考,以自我为中心,完全意识不到自己的问题。每次任务都交代不全,都得我去问。哎。。失望了。。。。心凉了。。。