nodejs默认的采用是morgan的日志系统,一般显示的结果都是在控制台输出,当重启服务器的时候,这些信息就会丢失,无法长久保存,因此,我们考虑采用新的log机制,在nodejs采用的比较多的是log4js。
1:下载安装log4js
npm install log4js
2:配置app.js
var log4js = require('log4js');
//配置日志系统
log4js.configure({
appenders: [
{type:'console'}, {
type:'file',
filename:'logs/access.log',
maxLogSize:1024,
backups:4,
category:'normal'
}
],
replaceConsole:true
});
var logger = log4js.getLogger('normal');
logger.setLevel('INFO');</span>
其中的log等级可以进行调节,分别有:TRACE、DEBUG、INFO、WARN、ERROR、FATAL。选择某一等级之后,Log只会记录当前等级及以上的日志,例如选择INFO,则只记录INFO、WARN、ERROR、FATAL。其余的信息不与记录。
然后应用Log:
app.use(log4js.connectLogger(logger, {level:'auto'}));//, format:':method :url'</span>
其中可以对输出的日志进行格式化,例如format:':method:url'则只显示方法和对应的请求的URL
对于日志中的level,也可以采用auto模式,即对应不同的response_code(3XX,4XX,5XX等等),分别对应WARN/ERROR等待。
3:拓展使用
当前配置的logger是在app.js中的,如果要在其他的route中使用logger则无法捕捉该句柄,所以可以把logger单独弄成api供其他的route使用。
采用nodejs的export:
exports.logger = function(name){
var logger = log4js.getLogger(name);
logger.setLevel('INFO');
return logger;
};
当需要在其他的文件中使用logger时,require该logger方法,然后调用即可。