这一篇足够:转载: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(),那么上线的时候,改动这个东西就要花很多时间。