如何轮转linux日志文件?

时间:2019-11-20 08:53:36  来源:igfitidea点击:

问:如何在Linux操作系统下轮换日志文件?

在Linux中,如何轮转日志文件?

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的配置文件:

# 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个轮换日志文件。即保存日志1年。
  • compress:使用gzip压缩旧版本的日志文件以节省磁盘空间。
  • missingok:如果缺少日志文件,请继续执行下一个而不发出错误消息。
  • notifempty:如果日志为空,就不轮转
  • sharedscripts:通常,对每个循环的日志运行prerotate和postrotate脚本,这意味着对于与多个文件匹配的日志文件条目,单个脚本可以运行多次。如果指定了sharedscript,则无论有多少个日志与通配符模式匹配,脚本都只会运行一次。
  • postrotate /bin/kill :在旋转日志文件后执行postrotate和endscript之间的行。