每天学习一点点,成功增加一大步

NodeJs笔记:日志管理工具之 log4js

NodsJS zhanghui 629℃

最近在做 nodejs 时遇到一个比较好用的日志管理工具 log4js ,它在使用上个人认为比较简单,要比 forever 好用很多,官方的文档将使用的方法也说得清楚、直接,让人看了易懂。

首先是在项目中安装 log4js

npm install --save log4js

log4js级别:大小写不敏感

ALL < TRACE < DEBUG < INFO < WARN < ERROR < FATAL < MARK < OFF

它的基本使用:

import * as log4js from 'log4js';
// cheese.log 就是日志保存的路径,可以在前面带上路径。如:./logger/cheese.log
log4js.configure({
 appenders: { cheese: { type: 'file', filename: 'cheese.log' } },
 categories: { default: { appenders: ['cheese'], level: 'error' } }
});
 
const logger = log4js.getLogger('cheese');
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.');

也可以 log 输出到文件中:多个文件,不同 level

log4js.configure({
 appenders: {
 out: { type: 'stdout' },//设置是否在控制台打印日志
 info: { type: 'file', filename: './logs/info.log' },
 just-errors: { type: 'file', filename: './logs/error.log' },
 'error': { type: 'logLevelFilter', appender: 'just-errors', level: 'error' }
 },
 categories: {
 default: { appenders: [ 'out', 'info','error' ], level: 'info' }//去掉'out'。控制台不打印日志
 }
});
var LogFile = log4js.getLogger(); 
LogFile.info('You can find logs-files in the log-dir'); 
var LogFile_info = log4js.getLogger('info'); 
LogFile_info.info('~~~~~~~info log~~~~~~~~~');
var LogFile_just-errors = log4js.getLogger('error'); 
LogFile_just.error('~~~~~~~error log~~~~~~~~~');
console.log("log_start end!");

还可以在配置中采用另一种通用的日期方式的日志记录方式

log4js.configure({
 replaceConsole: true,
 appenders: {
 stdout: {//控制台输出
 type: 'stdout'
 },
 req: {//请求日志
 type: 'dateFile',
 filename: 'logger/reqlog/',// 需要手动建好目录
 // maxLogSize: 1024,// 只在 type: 'file' 中才支持
 pattern: 'yyyy-MM/req-yyyy-MM-dd.log',// 指定pattern后无限备份
 alwaysIncludePattern: true// 不指定pattern时若为true会使用默认值'.yyyy-MM-dd'
 },
 err: {//错误日志
 type: 'dateFile',
 filename: 'logger/errlog/',
 pattern: 'yyyy-MM/err-yyyy-MM-dd.log',
 alwaysIncludePattern: true
 },
 oth: {//其他日志
 type: 'dateFile',
 filename: 'logger/othlog/',
 pattern: 'yyyy-MM/oth-yyyy-MM-dd.log',
 alwaysIncludePattern: true
 }
 },
 categories: {
 default: { appenders: ['stdout', 'req'], level: 'debug' },//appenders:采用的appender,取appenders项,level:设置级别
 err: { appenders: ['stdout', 'err'], level: 'error' },
 oth: { appenders: ['stdout', 'oth'], level: 'info' }
 }
})

更多的信息参考官方文档:https://www.npmjs.com/package/log4js

转载请注明:隨習筆記 » NodeJs笔记:日志管理工具之 log4js