不管是什么项目,日志一直是一个重要组成部分,它可以随时供你查看重要数据信息,在nodejs中查看实时日志可以用pm2 logs查看,如果用户比较多怎么办了?如何将正常日志和错误日志分开?如何对每天的日志归档?下面我们一起来看下。
- 使用log4js创建日志文件,新建logs目录,在目录下新建cheese.log和logger.js文件
- 在logger.js中加入以下代码
var log4js = require('log4js');
log4js.configure({
appenders: {
console:{ type: 'console' },
cheeseLogs:{ type: 'file', filename: 'logs/cheese.log', category: 'cheese' }
},
categories: {
default: {appenders: ['console', 'cheeseLogs'], level: 'info'}
}
});
var logger = log4js.getLogger('cheese');
module.exports = logger;
- 修改router.js代码
- 发送请求打印日志看下
控制台输出实时日志,在cheese.log文件中也记录了这条日志,那么问题来了,cheese.log中记录的是所有日志信息,有时我们需要将正常日志和错误日志分开,怎么办!!
下面来一起看下nodejs的另外一个日志控制方法,使用pm2控制日志输出
- 新建app.json文件,添加以下配置
{
"script": "app.js",
"instances": 4,//进程数
"exec_mode": "cluster",
"error_file": "err.log",
"out_file": "out.log",
"merge_logs": true,
"log_date_format": "YYYY-MM-DD hh:mm:ss"
}
- 使用pm2 start app.json启动项目
可以看到项目自动创建了err.log和out.log两个文件夹,它们分别保存了错误日志和正常日志。
运行项目我们发现cheese.log,err.log和out.log都是存放的总的日志信息,我们想把日志拆分成按日期分类的怎么办了?
一起来看下nodejs提供的另外一个库log-master
- 新建spliteLog目录,在app.js中添加以下代码
var logMaster = require('log-master');
logMaster.split({ //切割,目前唯一的功能
"from": { //源文件夹,可多选。
"app": "./"
},
"Suffix": [".log"], //要切割的文件类型,可多选。默认 [".log"]
"to": "./splitLog", //目标文件夹,log都会到这里。
"Interval": 1000 * 60 * 60 * 24, //切割时间间隔,默认一天。
"timeFormat": "yyyy年MM月dd日HH时mm分ss秒", //时间格式(生成的文件夹名),默认为yyyy年MM月dd日HH时mm分ss秒
"startTime": "23:59" //开始时间,默认零点,精确到秒的话就:"00:00:00"
});
- 运行项目后,我们就能看到按日期分割的日志了
总结:nodejs日志管理代码简单,功能强大,很方便管理项目日志信息。log4js,log-master以及pm2的日志管理还有很多小功能,这里就不多说,大家根据需求来使用!!