如何轮换(转储)日志文件?
时间:2020-01-09 14:16:43 来源:igfitidea点击:
问题描述:如何在Linux操作系统下轮换日志文件?
解决方法:您需要使用名为logrotate的工具,该工具旨在简化对生成大量日志文件的系统的管理。
它允许自动转储,压缩,删除和邮寄日志文件。
每个日志文件都可以每天,每周,每月或当它变得太大时进行处理。
使用此工具,可以使日志保留更长时间,磁盘空间更少。
默认配置文件
缺省配置文件是/etc/logrotate.conf:
# 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 }
服务或服务器特定的配置存储在/etc/logrotate.d目录中,例如,以下是示例Apache logrotate配置文件:
# 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 }
其中:
- weekly:如果当前工作日少于最后一次轮换的工作日,或者自上次轮换以来已经过去了一周,则日志文件轮换。
- rotate 52:日志文件已旋转52次,然后再删除或邮寄到mail指令中指定的地址。如果count为0,则删除旧版本,而不是旋转旧版本。
- compress:使用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之间的行(两者都必须自己显示在行上)。这些指令只能出现在日志文件定义中。