log4js

这一篇足够:转载:http://www.cnblogs.com/Joans/p/4092293.html

代码贴出来吧:

log.js

var log4js = require('log4js');
log4js.configure({
    appenders: [
        {
            type: 'console',
            category: "console"
        }, //控制台输出
        {
            type: "dateFile",
            filename: 'logs/log.log',
            pattern: "_yyyy-MM-dd",
            alwaysIncludePattern: false,
            category: 'dateFileLog'
        },
        {
            type: "dateFile",
            filename: 'logs/sqllog.log',
            pattern: "_yyyy-MM-dd",
            alwaysIncludePattern: false,
            category: 'sqlFileLog'
        },
        {
            type: 'file',
            filename: 'logs/soldier.log',
            category: 'soldierLog'
        }
    ],
    replaceConsole: true,   //替换console.log
    levels: {
        dateFileLog: 'INFO',
        sqlFileLog: 'INFO',
        soldierLog: 'ERROR'
    }
});

var dateFileLog = log4js.getLogger('dateFileLog');
var soldierLog = log4js.getLogger('soldierLog');
var sqlFile = log4js.getLogger('sqlFileLog');


//exports.logger = dateFileLog;

exports.use = function (app) {
    //页面请求日志,用auto的话,默认级别是WARN
    //app.use(log4js.connectLogger(dateFileLog, {level:'auto', format:':method :url'}));
    app.use(log4js.connectLogger(dateFileLog, {level: 'debug', format: ':method :url'}));
};

global.logger = dateFileLog;
global.sqlLogger = sqlFile;
global.soldierLog = soldierLog;

在express初始化时候:

var log = require('./log4');//引入Log4js

log.use(app);//app为express的对象

虽然设置的debug模式,但是只有info以上的可以打出来,info也可以

其中type的格式有file 还有datefile之类的。

log4js的输出级别6个: trace, debug, info, warn, error, fatal

  • logger.trace(‘Entering cheese testing’);
  • logger.debug(‘Got cheese.’);
  • logger.info(‘Cheese is Gouda.’);
  • logger.warn(‘Cheese is quite smelly.’);
  • logger.error(‘Cheese is too ripe!’);
  • logger.fatal(‘Cheese was breeding ground for listeria.’);

如果输出级别是INFO,则不会打印出低于info级别的日志trace,debug,只打印info,warn,error,fatal。这样做 的好处在于,在生产环境中我们可能只关心异常和错误,并不关心调试信息。从而大大减少日志的输出,能减少磁盘写入。而在开发环境中,我们可以需要打印非常 多的信息,帮助开发人员定位错误,调试代码。

还有一个好处就是,代码中可以混有各种的日志打印代码。我们只要在一个配置文件中,修改输出级别,日志输出就会发生变化,不用修改所有的代码。如果所有地方都是console.log(),那么上线的时候,改动这个东西就要花很多时间。

原文地址:https://www.cnblogs.com/coding4/p/5866430.html