推荐使用以下库,根据需求选择:
以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