推薦使用以下庫,根據需求選擇:
以Winston為例:
npm install winston
const winston = require('winston');
const logger = winston.createLogger({
level: 'info', // 日志級別(error/warn/info/debug)
format: winston.format.json(), // 輸出格式
transports: [
new winston.transports.Console(), // 輸出到控制臺
new winston.transports.File({ filename: 'error.log', level: 'error' }), // 錯誤日志單獨文件
new winston.transports.File({ filename: 'combined.log' }) // 所有日志文件
]
});
logger.info('這是一條信息日志');
使用winston-daily-rotate-file插件:
npm install winston-daily-rotate-file
const DailyRotateFile = require('winston-daily-rotate-file');
const transport = new DailyRotateFile({
filename: 'app-%DATE%.log',
datePattern: 'YYYY-MM-DD',
maxSize: '20m', // 單個文件最大20MB
maxFiles: '14d', // 保留14天日志
zippedArchive: true // 壓縮舊日志
});
const logger = winston.createLogger({
transports: [transport]
});
通過環境變量調整日志級別,無需修改代碼:
const logLevel = process.env.LOG_LEVEL || 'info'; // 優先讀取環境變量,未設置則默認info
const logger = winston.createLogger({
level: logLevel,
// 其他配置...
});
啟動時指定環境變量:
LOG_LEVEL=debug node app.js
rsyslog服務,將日志集中到遠程服務器。chmod 640 /path/to/logs/*.log
chown root:adm /path/to/logs/*.log