一、log4js是什么
log4js是一个用于Node.js的多目标日志记录框架。它提供与Log4j API相似的功能,可以将日志记录到文件、控制台、UDP、SMTP、GELF和任何能实现的其他目标。
与Node.js内置的console.log方法相比,log4js提供了更多的灵活性和控制性,并且可以将日志记录到各种不同的目标中。
在使用log4js之前,我们需要先安装它。
npm install log4js
二、log4js输出到控制台
首先,我们需要引入log4js模块并创建一个Logger对象。然后,我们可以使用Logger.debug、Logger.info、Logger.error等方法记录不同级别的日志。
如果需要将日志输出到控制台上,我们可以使用log4js的console appender。
const log4js = require('log4js');
const logger = log4js.getLogger();
logger.level = 'debug'; //设置日志级别为debug
log4js.configure({
appenders: { console: { type: 'console' } },
categories: { default: { appenders: ['console'], level: 'debug' } }
});
logger.debug('this is a debug log');
logger.info('this is an info log');
logger.warn('this is a warn log');
logger.error('this is an error log');
三、log4js收集错误日志
log4js也可以将错误日志记录到文件中。我们可以使用file appender来实现这个功能。
首先,我们需要创建一个目录用于存放日志文件。在下面的例子中,我们创建了一个logs目录。
然后,我们需要创建一个file appender,并将其添加到categories中的日志输出配置中。我们可以指定输出的日志的格式,以及日志文件的名称和路径。
const log4js = require('log4js');
const logger = log4js.getLogger();
logger.level = 'debug'; //设置日志级别为debug
log4js.configure({
appenders: {
everything: {
type: 'file',
filename: 'logs/all-the-logs.log',
maxLogSize: 10485760, //文件大小限制
backups: 3, //保留3个备份文件
compress: true //gzip压缩
}
},
categories: { default: { appenders: ['everything'], level: 'debug' } }
});
logger.debug('this is a debug log');
logger.info('this is an info log');
logger.warn('this is a warn log');
logger.error('this is an error log');
四、使用日志记录HTTP请求与响应
log4js还提供了connect-logger和express-logger中间件,可以使用它们来记录HTTP请求和响应的日志。
下面是使用express-logger中间件的示例代码:
const express = require('express');
const log4js = require('log4js');
const app = express();
log4js.configure({
appenders: {
file: { type: 'file', filename: 'logs/access.log' },
console: { type: 'console' }
},
categories: { default: { appenders: ['file', 'console'], level: 'info' } }
});
app.use(log4js.connectLogger(log4js.getLogger('http'), { level: 'auto' }));
//或者使用app.use(log4js.expressLogger(log4js.getLogger('http'), { level: 'auto' }));
app.get('/', (req, res) => {
res.send('Hello World!');
});
app.listen(3000, () => {
console.log('Example app listening on port 3000!');
});
五、自定义日志输出格式
log4js还支持自定义输出格式。我们可以使用layout来设置输出格式,并将其添加到appender的配置中。
const log4js = require('log4js');
const logger = log4js.getLogger();
logger.level = 'debug'; //设置日志级别为debug
log4js.configure({
appenders: {
out: {
type: 'console',
layout: {
type: 'pattern',
pattern: '%[[%d] [%p] [%c]%] - %m%n'
}
}
},
categories: { default: { appenders: ['out'], level: 'debug' } }
});
logger.debug('this is a debug log');
logger.info('this is an info log');
logger.warn('this is a warn log');
logger.error('this is an error log');
六、总结
通过本文的介绍,我们了解了log4js的一些常用功能和用法,包括输出到控制台、收集错误日志、记录HTTP请求和响应、以及自定义日志输出格式等。使用log4js可以让我们更好地管理和记录应用程序日志。
原创文章,作者:RXWY,如若转载,请注明出处:https://www.506064.com/n/147117.html