如何记录日志? -- node/winston

日志对于线上程序的监控至关重要,本文详细介绍了如何利用node.js的winston库进行日志记录。内容包括日志调用方法、format链处理、多种transport通道、logger容器管理以及错误处理。此外,还探讨了将日志持久化为JSON格式,并通过filebeat推送到ELK进行分析的实践。同时,文章展示了如何在Koa应用中整合winston,实现请求的完整日志记录。
摘要由CSDN通过智能技术生成

日志是程序很重要的组成部分,程序在线上只能通过日志才能观察到运行情况,所以好的日志能够帮助你了解情况,分析问题。

一般来说,日志记录应以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', 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值