Node.js日志在Debian中的存储优化方法
一 生成侧优化
二 存储侧优化
三 集中化与运维
四 落地配置示例
使用Winston + Daily Rotate File(按天/按大小滚动,压缩归档)
const winston = require('winston');
const { createLogger, format, transports } = winston;
const DailyRotateFile = require('winston-daily-rotate-file');
const logger = createLogger({
level: 'info',
format: format.combine(
format.timestamp({ format: 'YYYY-MM-DD HH:mm:ss' }),
format.json()
),
transports: [
new DailyRotateFile({
filename: '/var/log/myapp/app-%DATE%.log',
datePattern: 'YYYY-MM-DD',
zippedArchive: true,
maxSize: '20m',
maxFiles: '14d'
}),
new transports.File({ filename: '/var/log/myapp/error.log', level: 'error' })
]
});
logger.info('hello world');
要点:按天生成文件,单文件超过20MB再切分,保留14天并压缩归档;错误日志单独输出。
使用logrotate管理Node.js日志(系统级轮转与清理) 创建文件:/etc/logrotate.d/nodejs
/var/log/myapp/*.log {
daily
rotate 7
compress
delaycompress
missingok
notifempty
create 0640 www-data www-data
dateext
dateformat -%Y-%m-%d
}
验证与强制执行:
sudo logrotate -d /etc/logrotate.d/nodeapp # 语法与执行计划演练
sudo logrotate -f /etc/logrotate.d/nodeapp # 强制执行一次
要点:每天轮转、保留7份、压缩旧日志、延迟压缩避免影响正在写入的文件、按日期后缀命名。
五 日常巡检与容量规划