Express搭建的項目在使用log4js與pm2共用時會出現log文件不能正常打印的問題,主要的解決方法就是引入pm2-intercom模塊,並在集羣配置文件中進行配置。javascript
const log4js = require('log4js');
log4js.configure({
appenders: {
console: { type: 'console' },
everything: {
type: 'dateFile',
filename: 'logs/all-the-logs.log',
pattern: '.yyyy-MM-dd-hh',
compress: true ,
daysToKeep:30
},
},
categories: {
default: { appenders: ['console'], level: 'debug' },//開發模式
log4jslog: { appenders: ["everything"], level: 'debug' }//生產模式
},
pm2: true,
pm2InstanceVar: 'INSTANCE_ID'
});
const logger = log4js.getLogger('default');//開發模式與生產模式進行切換
exports.logger = logger;
exports.use = function(app){
app.use(log4js.connectLogger(logger, { level: 'auto', format: ':method :url'}));
}
複製代碼
"instance_var": "INSTANCE_ID", //爲了解決與pm2 cluster衝突問題"output": "/dev/null", //禁用pm2存儲log輸出日誌到本地文件"error": "/dev/null" //禁用pm2存儲log錯誤日誌到本地文件複製代碼
var log4js = require('./jobs/log');
log4js.use(app); //該部分必定要在app.use(logger('dev'))以前,不然將不能打印請求的路由信息複製代碼
在log.js文件中對 log4js.getLogger()引用的值進行更改
const logger = log4js.getLogger('default'); //開發模式,日誌不會寫入日誌文件,只會在控制檯顯示
const logger = log4js.getLogger('everything'); //生產模式
複製代碼
log4js的輸出級別6個(按級別由低到高排序): trace(藍色)、debug(青色)、info(綠色)、warn(黃色)、error(紅色)、fatal(粉色)html
logger.trace('this is trace');
logger.debug('this is debug');
logger.info('this is info');
logger.warn('this is warn');
logger.error('this is error');
logger.fatal('this is fatal');
複製代碼