一.概要说明
logrotate工具是为了方便进行日志管理而产生的一个工具,主要可以完成的工作包含:基于天、周、月、文件大小进行日志的滚动备份、压缩、删除甚至是发送邮件。
二.调用方式
- 每天晚上,cron daemon会自动执行/etc/cron.daily目录下的任务。
- 这个会触发/etc/cron.daily/logrotate文件,logrotate一般是随linux安装的。它会执行这个命令“/usr/sbin/logrotate /etc/logrotate.conf”。
- /etc/logrotate.conf 包含了/etc/logrotate.d目录下的所有脚本。
- 这个会触发自定义的/etc/logrotate.d/…文件。
三. logrotate语法
logrotate [-dv] [-f] [-s] config_file+ 什么都不跟则显示版本信息和简单的帮助信息,如果处理过程中出现异常则返回非0的$?;
参数 | 说明 |
---|---|
- --? | 显示帮助信息 |
-v | 显示详细信息 |
-d | 开启调试模式并隐含开启-v,不会对日志和logrotate的state文件产生操作 |
-f | 忽略调用周期强制调用logrotate,方便测试 |
-m | 告知logrotate发送邮件的命令 |
-s | 多个logrotate运行时告知logrotate自己使用的state文件(/var/lib/logrotate.status) |
config_file+ | 表示可以使用多个配置文件(默认为/etc/logrotate.conf)在后面,最好是在一个配置文件中进行引用(测试某条新的规则时可以单独创建一个配置文件并用-f参数进行强行调用) |
例: /usr/sbin/logrotate -vf /etc/logrotate.d/audit
四. logrotate配置
日志配置目录 /etc/logrotate.d/…
logrotate 缺省配置目录 /etc/logrotate.conf
五. logrotate参数
参数 | 说明 |
---|---|
daily | 表示每天整理一次,其它可用值为‘weekly’、‘monthly’、‘yearly’ |
rotate 30 | 表示保留30份的备份文件 |
dateext | 让旧日志文件以创建日期命名 |
compress | 通过gzip 压缩转储以后的日志 |
nocompress | 不压缩日志 |
delaycompress | 与compress一起用,转储的日志文件到下一次转储时才压缩 |
copytruncate | 表示先复制log文件的内容,然后再清空 |
size 5M | 日志文件大小增长到5MB再进行轮循 |
notifempty | 如果日志文件为空,轮循不会进行。 |
missingok | 在日志轮循期间,任何错误将被忽略,例如“文件无法找到”之类的错误。 |
postrotate | 在转储以后执行命令,postrotate和endscript里面指定的命令将被执行。 |
endscript | 在这种情况下,rsyslogd 进程将立即再次读取其配置并继续运行。 |
prerotate | 在转储以前执行的命令 |
endscript | 在转储以前执行的命令 |
六. XenServer设置
/etc/logratate.d/…
文件夹 | 文件 |
---|---|
audit | audit.log |
syslog | messages |
syslog | secure |
syslog | maillog |
syslog | spooler |
syslog | boot.log |
syslog | cron |
**audit具体配置: **
/var/log/audit.log {
daily
rotate 30
dateext
compress
delaycompress
notifempty
missingok
sharedscripts
postrotate
/bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true
/bin/kill -HUP `cat /var/run/rsyslogd.pid 2> /dev/null` 2> /dev/null || true
endscript
}
syslog具体配置:
/var/log/messages /var/log/secure /var/log/maillog /var/log/spooler /var/log/boot.log /var/log/cron {
daily
rotate 30
dateext
compress
delaycompress
missingok
notifempty
sharedscripts
postrotate
/bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true
/bin/kill -HUP `cat /var/run/rsyslogd.pid 2> /dev/null` 2> /dev/null || true
endscript
}
七. Tomcat设置
Tomcat日志配置路径 /etc/logrotate.d/tomcat
Tomcat日志存储路径 /opt/tomcat7/logs/…
vim /etc/logrotate.d/tomcat
/opt/tomcat7/logs/catalina.out {
rotate 14
daily
copytruncate
compress
notifempty
missingok
}