如何轮换日志文件?
问:如何在 Linux 操作系统下轮换日志文件?
答:您需要使用名为 logrotate 的工具,该工具旨在简化生成大量日志文件的系统的管理。它允许自动轮换、压缩、删除和邮寄日志文件。
每个日志文件可以按日、周、月进行处理,或者在日志文件变得太大时进行处理。使用此工具,您可以用更少的磁盘空间保存更长时间的日志。
默认配置文件
默认配置文件是 /etc/logrotate.conf:服务或服务器特定的配置存储在 /etc/logrotate.d 目录中,例如这里是示例 apache logrotate 配置文件:输出:
# see "man logrotate" for details
# rotate log files weekly
weekly
# keep 4 weeks worth of backlogs
rotate 4
# create new (empty) log files after rotating old ones
create
# uncomment this if you want your log files compressed
#compress
# RPM packages drop log rotation information into this directory
include /etc/logrotate.d
# no packages own wtmp -- we'll rotate them here
/var/log/wtmp {
monthly
create 0664 root utmp
rotate 1
}# cat /etc/logrotate.d/httpd
/var/log/httpd/*.log { weekly rotate 52 compress missingok notifempty sharedscripts postrotate /bin/kill -HUP `cat /var/run/httpd.pid 2>/dev/null` 2> /dev/null || true endscript }
在哪里,
- 每周 :如果当前工作日早于上次轮换的工作日,或者自上次轮换以来已过去一周以上,则轮换日志文件。
- rotate 52 :日志文件在被删除或邮寄到 mail 命令中指定的地址之前会轮换 52 次。如果 count 为 0,则删除旧版本,而不是轮换。
- 压缩:使用 gzip 压缩旧版本的日志文件以节省磁盘空间。
- missingok :如果日志文件丢失,则继续下一个文件而不发出错误消息。
- notifempty :如果日志为空,则不轮换日志
- sharedscripts :通常,prerotate 和 postrotate 脚本会针对每个轮换的日志运行,这意味着单个脚本可能会针对与多个文件匹配的日志文件条目运行多次。如果指定了 sharedscript,则无论有多少日志与通配符模式匹配,脚本都只会运行一次。但是,如果模式中没有任何日志需要轮换,则根本不会运行脚本。
- postrotate
/bin/kill -HUP `cat /var/run/httpd.pid 2>/dev/null` 2> /dev/null || true
endscript :postrotate 和 endscript 之间的行(两者必须单独出现在行上)在日志文件旋转后执行。这些指令只能出现在日志文件定义内。
查看完整的工作示例:如何使用 logrotate为 Lighttpd 网络服务器轮换日志。