Debian分卷日志管理实践
一 核心概念与位置
二 使用 logrotate 实现按大小或时间分卷
/var/log/myapp.log {
daily
size 2048k
missingok
rotate 30
compress
delaycompress
notifempty
create 640 root adm
sharedscripts
postrotate
# 依据实际服务替换为 systemctl reload 或 kill -USR1 等
systemctl reload myapp >/dev/null 2>&1 || true
endscript
}
/var/log/syslog
/var/log/mail.info
/var/log/mail.warn
/var/log/mail.err
/var/log/mail.log
/var/log/daemon.log
/var/log/kern.log
/var/log/auth.log
/var/log/user.log
/var/log/lpr.log
/var/log/cron.log
/var/log/debug
/var/log/messages {
weekly
rotate 52
compress
delaycompress
missingok
notifempty
create 0640 root adm
sharedscripts
postrotate
/usr/lib/rsyslog/rsyslogd reload >/dev/null
endscript
}
/var/log/nginx/*.log {
daily
rotate 7
compress
delaycompress
missingok
notifempty
create 0640 www-data adm
postrotate
systemctl reload nginx >/dev/null
endscript
}
三 按时间分卷的替代方案
const DailyRotateFile = require('winston-daily-rotate-file');
const transport = new DailyRotateFile({
filename: 'application-%DATE%.log',
datePattern: 'YYYY-MM-DD-HH',
zippedArchive: true,
maxSize: '20m',
maxFiles: '14d'
});
&lumberjack.Logger{
Filename: "/var/log/myapp.log",
MaxSize: 10, // MB
MaxBackups: 3, // 保留个数
MaxAge: 28, // 保留天数
Compress: true, // 是否压缩
}
四 systemd journal 日志的分卷与保留
五 运维要点与排错清单