在Debian系統中,Node.js應用程序的日志級別通常是通過應用程序本身的配置來設置的,而不是通過系統級的配置。Node.js應用程序通常使用第三方日志庫,如winston
、bunyan
或morgan
等,來處理日志記錄和日志級別設置。
以下是一些常見的Node.js日志庫及其日志級別設置的示例:
Winston是一個流行的日志庫,支持多種傳輸方式和日志級別。
const winston = require('winston');
const logger = winston.createLogger({
level: 'info', // 設置日志級別為info
format: winston.format.json(),
transports: [
new winston.transports.File({ filename: 'error.log', level: 'error' }),
new winston.transports.File({ filename: 'combined.log' }),
],
});
// 如果不在生產環境中,可以添加控制臺傳輸
if (process.env.NODE_ENV !== 'production') {
logger.add(new winston.transports.Console({
format: winston.format.simple(),
}));
}
Bunyan是另一個流行的日志庫,以其簡潔的JSON格式和易于使用的API而聞名。
const bunyan = require('bunyan');
const logger = bunyan.createLogger({
name: 'myApp',
streams: [
{
level: 'info', // 設置日志級別為info
stream: process.stdout,
},
{
level: 'error',
path: 'error.log',
},
],
});
Morgan是一個HTTP請求記錄中間件,通常用于Express應用程序。
const express = require('express');
const morgan = require('morgan');
const app = express();
// 設置日志級別為combined
app.use(morgan('combined'));
app.get('/', (req, res) => {
res.send('Hello World!');
});
app.listen(3000, () => {
console.log('Server is running on port 3000');
});
在某些情況下,你可能希望通過環境變量來設置日志級別。例如,使用winston
時:
const winston = require('winston');
const logger = winston.createLogger({
level: process.env.LOG_LEVEL || 'info', // 從環境變量中讀取日志級別,默認為info
format: winston.format.json(),
transports: [
new winston.transports.File({ filename: 'error.log', level: 'error' }),
new winston.transports.File({ filename: 'combined.log' }),
],
});
然后,你可以在啟動應用程序時設置環境變量:
LOG_LEVEL=debug node app.js
通過這種方式,你可以在不同的環境中靈活地設置日志級別。