Node.js log4js 使用详解
在Node.js项目开发中,我们往往需要记录日志以追踪程序的运行情况。log4js 是一个功能强大的记录日志的模块,它支持多种日志级别和日志输出方式。本篇文章将详细介绍 log4js 的使用,包括安装,配置和示例。
安装 log4js
你可以通过 npm 安装 log4js:
npm install log4js --save
配置 log4js
log4js 的配置文件可以是 JSON 或者 JavaScript 模块,下面是一个 JSON 配置文件的例子:
{
"appenders": {
"console": {
"type": "console"
},
"file": {
"type": "file",
"filename": "logs/app.log",
"maxLogSize": 20480,
"backups": 3,
"compress": true
}
},
"categories": {
"default": {
"appenders": [
"console",
"file"
],
"level": "info"
}
}
}
- "appenders" 包含了两个 fppender: "console" 和 "file"。"console" fppender 用于将日志输出到控制台,“file” fppender 将日志输出到文件。
- "categories" 指定了日志的分类,"default" 是一个默认分类,指定了日志级别为 info,并且将日志输出到 "console" 和 "file" fppender。
我们通常会将配置文件放在项目的根目录,并将它称为 'log4js.json' 或者 'log4js.config.js' (对应于 JSON 和 JavaScript 配置文件)。
如果你使用了 JavaScript 配置文件,你需要导出一个对象,该对象包含了配置信息。例如 module.exports = { /* 配置信息 */ }
。
使用 log4js
使用 log4js 可以非常简单,只需要导入 log4js 模块并配置 logging 器。
const log4js = require('log4js');
log4js.configure('./log4js.json');
const logger = log4js.getLogger('default');
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.');
输出:
[2021-09-22T03:45:23.737] [INFO] default - Cheese is Gouda.
[2021-09-22T03:45:23.747] [WARN] default - Cheese is quite smelly.
[2021-09-22T03:45:23.747] [ERROR] default - Cheese is too ripe!
[2021-09-22T03:45:23.748] [FATAL] default - Cheese was breeding ground for listeria.
在示例中,我们首先要导入 log4js 模块。然后,使用 log4js.configure() 方法来配置 logging 器。在默认情况下,logging 器的名称是 'default'。
接下来,我们通过 log4js.getLogger('default') 创建了一个 logging 器实例,并通过调用不同的日志级别的方法来记录日志。
示例1:将日志输出到文件
在配置文件中加入一个名为 'file' 的 fppender 可以把日志输出到文件中,我们可以通过以下示例:
{
"appenders": {
"file": {
"type": "file",
"filename": "logs/app.log",
"maxLogSize": 20480,
"backups": 3,
"compress": true
}
},
"categories": {
"default": {
"appenders": [
"file"
],
"level": "info"
}
}
}
这样示例程序将只会输出到文件中:
const log4js = require('log4js');
log4js.configure('./log4js.json');
const logger = log4js.getLogger('default');
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.');
输出:
app.log:
[2021-09-22T03:45:23.737] [INFO] default - Cheese is Gouda.
[2021-09-22T03:45:23.747] [WARN] default - Cheese is quite smelly.
[2021-09-22T03:45:23.747] [ERROR] default - Cheese is too ripe!
[2021-09-22T03:45:23.748] [FATAL] default - Cheese was breeding ground for listeria.
示例2:自定义日志格式
我们可以使用 log4js.addLayout() 方法自定义日志格式。下面是一个示例:
const log4js = require('log4js');
log4js.addLayout('json', function (config) {
return function (logEvent) { return JSON.stringify(logEvent) + config.separator; }
});
log4js.configure({
appenders: {
console: { type: 'console' }
},
categories: {
default: {
appenders: ['console'],
level: 'trace'
}
}
});
const logger = log4js.getLogger('default');
logger.fatal({ message: 'test log' });
输出:
{"startTime":"2021-09-22T03:54:38.911Z","categoryName":"default","data":[{"message":"test log"}],"level":"FATAL","context":"DEFAULT","cluster":{"worker":null,"master":null},"pid":27374,"hostname":"xxx.xx.x.xx"}
在这个示例中,我们使用 addLayout() 方法自定义了一个名为 'json' 的日志格式,然后在 categories 中把输出流设置为 console fppender。当我们调用 logger.fatal() 方法时,日志会根据我们自定义的日志格式输出。
总结
log4js 是一个功能强大的日志记录器,它提供了丰富的日志级别和日志输出方式。在我们的项目中合理使用 log4js 可以方便我们追踪程序的运行情况,排查问题。在使用中我们可以使用配置文件来设置 log4js 的行为,以及自定义日志格式。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:nodejs log4js 使用详解 - Python技术站