Logrotate 是 Linux 系统中用于管理日志文件的标准工具,能够自动对日志进行轮转(切割)、压缩、删除和邮件发送。
运行 man logrotate 或者访问文件 logrotate.8.in 可以查阅说明书。本文基于手册列举一些基本用法。
新建一个轮转服务,执行
sudo nano /etc/logrotate.d/your-log-set在文件内记录轮转服务的细节
# 使用井号写注释
compress # 所有提到的配置压缩
# ↑ 可以在文件任意位置这样写该文件的全局设置
# 定义一个日志文件的轮转规则
/var/log/messages {
rotate 5
weekly
postrotate
/usr/bin/killall \-HUP syslogd
endscript
}
# 多个文件的规则,对于特殊文件名支持引号和转义符号
"/var/log/httpd/access.log" /var/log/httpd/error.log {
rotate 5
mail [email protected]
size 100k
sharedscripts
postrotate
/usr/bin/killall \-HUP httpd
endscript
}
/var/log/news/* {
monthly
rotate 2
olddir /var/log/news/old
missingok
sharedscripts
postrotate
kill \-HUP $(cat /var/run/inn.pid)
endscript
nocompress
}
~/log/*.log {}撰写后,记得用 -d 进行 dry run 模拟运行。也可以直接用 -f 试跑。
sudo logrotate -d /etc/logrotate.d/your-log-set有时候目录无权限,提示 error: skipping "site.log" because parent directory has insecure permissions,可能需要用其他账户来执行
/var/log/www/site.log {
# ...
su www-data www-data
}