Node.js Log4js输出自定义格式和变量

本文介绍如何使用Log4js的PatternLayout自定义日志格式,通过添加自定义变量如当前用户名,并展示了如何优雅地在代码中更新这些变量。利用express中间件截取request参数,设置到log4js,使所有logger都能格式化打印定义参数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Log4js输出自定义格式,或者想在log里添加自己定义的变量,如显示当前用户名,可以通过pattern layout来实现。

Log4js Pattern Layout

  • 设置占位符如%X{user}
  • 在代码里调用addContext('user','userName')更新变量
log4js.configure({
  appenders: {
    out: { type: 'stdout', layout: {
      type: 'pattern',
      pattern: '%d %p %c %X{user} %m%n'
    }}
  },
  categories: { default: { appenders: ['out'], level: 'info' } }
});
const logger = log4js.getLogger();
logger.addContext('user', 'charlie');
logger.info('doing something.');

This would output:

2017-06-01 08:32:56.283 INFO default charlie doing something.

如何优雅地addContext

思路是利用express middleware,截取request获得参数信息,调用addContext()设置到log4js后,再转发到router的其他请求。这样,在该router里的所有logger都可以格式化地print出我们定义的参数。

这里有个简单Demo,其他AOP方法尚待研究。
https://github.com/prufeng/autotest-node

参考

https://github.com/log4js-node/log4js-node/blob/master/docs/layouts.md

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值