我使用pm2的cluster集群模式管理node服务,使用log4js打印日志。最近公司业务量上升,与此同时问题订单也随之增多。但多次在排查异常订单时找不到订单的正常日志,在基本排除程序本身问题后我将目光投在了日志打印插件log4js身上。
1:这是我目前的log4js的配置
log4js.configure({
appenders: {
out: { type: 'stdout' },
info: {
type: 'dateFile',
filename: 'info',
pattern: '-yyyy-MM-dd.log',
layout: {
type: 'pattern',
pattern: '%d{yyyy-MM-ddThh:mm:ss.SSSO} %p %c - [%m]'
}
},
},
categories: {
default: { appenders: ['out','info'], level: 'all' },
},
pm2: true,
disableClustering: true
});
我在网上也找到了很多博客,看到很多人都是这么写的。这么写可以解决cluster集群模式下只有一个进程输出的问题。但是在翻了log4js的源码之后我发现,如果设置了disableClustering为true之后,每个cluster进程都会单独向文件输出日志。
log4js.configure()配置的源码如下&