Node.js 在 Linux 的日志管理实践
一 核心方案与工具
二 快速上手示例
const winston = require('winston');
const DailyRotateFile = require('winston-daily-rotate-file');
const transport = new DailyRotateFile({
filename: 'logs/app-%DATE%.log',
datePattern: 'YYYY-MM-DD',
zippedArchive: true,
maxSize: '20m',
maxFiles: '14d'
});
const logger = winston.createLogger({
level: 'info',
format: winston.format.combine(
winston.format.timestamp(),
winston.format.json()
),
transports: [new winston.transports.Console(), transport]
});
logger.info('服务启动', { port: 3000 });
logger.error('数据库错误', { err: 'timeout' });
三 系统级日志轮转与远程日志
/var/log/nodejs/*.log {
daily
rotate 7
compress
missingok
notifempty
create 0640 root adm
}
说明:每天轮转、保留 7 天、压缩旧日志、自动创建新文件并设置权限。const syslog = require('syslog');
syslog.openlog('nodejs-app', { facility: 'local0' });
syslog.syslog('Hello, rsyslog');
syslog.closelog();
提示:生产环境优先使用更安全的 TCP/TLS 方案,并配置访问白名单。四 集中式日志与可视化
五 最佳实践与性能建议