日志是程序很重要的组成部分,程序在线上只能通过日志才能观察到运行情况,所以好的日志能够帮助你了解情况,分析问题。
一般来说,日志记录应以rotate方式记录成文件,常规日志文件会采用plain text,
[INFO] 11:06:12 login ok.
但现在更多的倾向于持久化为结构化JSON,
{"requestId":"0f111049-09f9-4f8e-9306-900652c833bf","filename":"server/middleware/koa-winston.js","line":14,"level":"info","message":"--> GET /oauth/me?token=WZbxb6O5 200","timestamp":1581954414}
在生产大量日志后,经由filebeat推送到ELK进行分析,这个单开issues说明。
来看winston使用方式,
const winston = require('winston');
const {
format } = winston;
const logger = winston.createLogger({
format: format.combine(
format.colorize(),
format.simple()
),
transports: [
new winston.transports.Console()
]
});
logger.log('info', 'some message');
logger.info('some info');
logger.error('some error');
输出内容:
$ node app
info: some message
info: some info
error: some error
Log调用方法
logger.log('info', 'hello world');
logger.log({
level: 'info',
message: 'hello world'
});
// string interpolation
// format中必须开启format.splat()
logger.log('info',