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');
复制代码