一、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/zh-tw/n/147117.html