在Ubuntu下,Node.js應用程序的日志級別通常是通過應用程序代碼來設置的。大多數Node.js應用程序使用第三方日志庫,如winston
、bunyan
或morgan
等。這些庫通常允許你設置不同的日志級別,例如:error、warn、info、verbose和debug。
以winston
為例,你可以在應用程序代碼中設置日志級別,如下所示:
const winston = require('winston');
const logger = winston.createLogger({
level: 'info', // 設置日志級別
format: winston.format.json(),
transports: [
new winston.transports.File({ filename: 'error.log', level: 'error' }),
new winston.transports.File({ filename: 'combined.log' }),
],
});
// 如果不在生產環境中,可以設置更高的日志級別,例如 'debug'
if (process.env.NODE_ENV !== 'production') {
logger.level = 'debug';
}
在這個例子中,我們將默認日志級別設置為info
。這意味著只有info
、warn
和error
級別的日志會被記錄。我們還將錯誤日志單獨記錄到一個名為error.log
的文件中,并將所有級別的日志記錄到名為combined.log
的文件中。
如果你想要在運行Node.js應用程序時動態更改日志級別,你可以使用第三方庫,如winston-level
。這是一個簡單的示例:
const winston = require('winston');
const Level = require('winston-level');
const logger = winston.createLogger({
level: new Level('info'),
format: winston.format.json(),
transports: [
new winston.transports.File({ filename: 'error.log', level: 'error' }),
new winston.transports.File({ filename: 'combined.log' }),
],
});
// 在運行時更改日志級別
setTimeout(() => {
logger.level = new Level('debug');
}, 10000); // 10秒后將日志級別更改為'debug'
在這個例子中,我們在10秒后將日志級別從info
更改為debug
。這可以幫助你在生產環境中調試問題,而無需重新啟動應用程序。