nodejs工程日志工具推荐-log4js

程序日志对于问题定位、调试,系统性能调优至关重要,尤其是系统复杂以及在线运行的情况下。好的开发框架都会有一个可开启关闭/可配置记录级别的日志系统。

我们可以从以下几个方面来做选型:

                      1. 每行日志都需要有准确无误的时间戳

                      2. 日志格式容易被人理解同时也容易被计算机进行分析处理

                      3. 允许配置不同的日志输出,比如对于不同级别的日志配置不同的处理方式

符合上述的要求的nodejs日志管理控件有很多,诸如BunyanWinston,还有Express框架中包含的logger等等。

但这些log记录方法使用起来总觉得缺少了点什么。尤其是对于使用sublime text编辑器+console控制台命令进行程序开发,习惯使用console.logconsole.error方式记录错误信息,在控制台进行调试的JavaScript工程师们,每一处程序断点处加入console.log()控制台输出的同时,还有再加上诸如logger.debug()进行文件级别的日志输出,未免会有些不习惯。


这里分享推荐一款较为流行,且能满足上述问题的日志控件log4js-node

log4js-node的每条log输出格式有如下几个字段:日志产生时间,level,日志分类,日志内容。如果用户没有配置,日志分类字段为“default”

log4js-node将输出的log分为六个的level,每个level的含义从字面就可以看出, 对于不同的levellog输出到终端时会使用不同的颜色(trace: 蓝色,debug: 青色, info:绿色,warn:黄色,error:红色, fatal:粉色)

安装特别简单,npm install log4js


接下来就是具体配置了,笔者的参考配置是:

//配置日志相关

if(!fs.existsSync('logs')){ //如果没有日志文件目录,则创建

fs.mkdirSync('logs',0777);

}

log4js.configure({ //更改配置项

appenders: [

{ type: 'console', //此处即时console控制台输出的地方

category: 'console'

},

{

type: 'dateFile', //此处为日志文件流输出的地方

filename: './logs/',

pattern: "debug_yyyyMMdd.log", //日志记录文件名称可使用正则

alwaysIncludePattern: true, //若使用正则文件名,须开启

maxLogSize: 4096,

backups: 4,

category: 'console' //日志文件输出的分类,若为console,则相当于在console和file同时输出。

}

],

'levels':{ 'console': 'DEBUG'}, //设置输出的日志最低级别,如debug一下的日志级别,如trace不输出

replaceConsole: true //替代原先的console.log的默认输出

});



var logInfo = log4js.getLogger('console');

exports.logger = logInfo;



exports.useLogger = function(app){

//页面请求日志,用auto的话,默认级别是WARN,笔者的框架是express

app.use(log4js.connectLogger(logInfo, {level:'auto', format:':method :url'}));

}


参考效果:

只需要在程序中设置一次断点:

控制台显示: 

文件输出:


是不是很赞~,参考链接:

https://github.com/nomiddlename/log4js-node/wiki/Appenders


网易云新用户大礼包:https://www.163yun.com/gift

本文来自网易实践者社区,经作者陈盛授权发布。