Logrotate daily+maxsize 不旋转
Logrotate daily+maxsize is not rotating
我已经安装了 logrotate 3.8.6 的 CentOS 7.4。我在 /etc/logrotate.d/
下有一个自定义 logrotate 文件,用于在安装在同一台机器上的 Tomcat(例如 catalina.out)上轮换一些日志。
/opt/test/apache-tomcat-8.5.15-client/logs/catalina.out {
copytruncate
daily
rotate 30
olddir /opt/test/apache-tomcat-8.5.15-client/logs/backup
compress
missingok
maxsize 50M
dateext
dateformat .%Y-%m-%d
}
我希望日志每天轮换或者如果大小达到 50MB。发生这种情况时,日志文件会被压缩并复制到备份文件夹中,并在删除前保留 30 天。
我已经 运行 使用以下命令在调试模式下手动进行 logrotate,并且没有显示任何错误(并且创建了预期的压缩日志文件):
/usr/sbin/logrotate -d /etc/logrotate.d/openncp-tomcat-backoffice 2> /tmp/logrotate.debug
在 /var/lib/logrotate/logrotate.status
中没有问题,文件显示为已旋转但实际上并没有:
"/var/log/yum.log" 2017-11-27-19:0:0
"/opt/test/apache-tomcat-8.5.15-server/logs/catalina.out" 2017-12-15-3:41:1
"/var/log/boot.log" 2017-12-15-3:41:1
"/var/log/up2date" 2017-11-27-19:0:0
我是默认的 /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
# use date as a suffix of the rotated file
dateext
# 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 and btmp -- we'll rotate them here
/var/log/wtmp {
monthly
create 0664 root utmp
minsize 1M
rotate 1
}
/var/log/btmp {
missingok
monthly
create 0600 root utmp
rotate 1
}
# system-specific logs may be also be configured here.
我也有默认的/etc/cron.daily/logrotate
:
#!/bin/sh
/usr/sbin/logrotate -s /var/lib/logrotate/logrotate.status /etc/logrotate.conf
EXITVALUE=$?
if [ $EXITVALUE != 0 ]; then
/usr/bin/logger -t logrotate "ALERT exited abnormally with [$EXITVALUE]"
fi
exit 0
我请求您指导如何正确配置它。
问题与日志文件的 SELinux 文件类型有关,这些文件位于不同于 /var/log 的目录中,这意味着 logrotate 进程无权执行其任务。我发现另一个 SO thread as well as this Redhat page 帮助解决了这个问题。我发现 Redhat 文档非常有用,所以我在这里提供 2 个链接:
要回答您关于 daily
和 maxsize
的问题(如标题所示),请注意默认情况下 logrotate
每天运行一次,所以这意味着 maxsize
在那种情况下几乎没有用。该文件无论如何都会被旋转(当然,假设您没有 SELinux 挡路。)
maxsize
对每周和每月很有用,当然,因为 logrotate
仍然每天检查文件。
我已经安装了 logrotate 3.8.6 的 CentOS 7.4。我在 /etc/logrotate.d/
下有一个自定义 logrotate 文件,用于在安装在同一台机器上的 Tomcat(例如 catalina.out)上轮换一些日志。
/opt/test/apache-tomcat-8.5.15-client/logs/catalina.out {
copytruncate
daily
rotate 30
olddir /opt/test/apache-tomcat-8.5.15-client/logs/backup
compress
missingok
maxsize 50M
dateext
dateformat .%Y-%m-%d
}
我希望日志每天轮换或者如果大小达到 50MB。发生这种情况时,日志文件会被压缩并复制到备份文件夹中,并在删除前保留 30 天。
我已经 运行 使用以下命令在调试模式下手动进行 logrotate,并且没有显示任何错误(并且创建了预期的压缩日志文件):
/usr/sbin/logrotate -d /etc/logrotate.d/openncp-tomcat-backoffice 2> /tmp/logrotate.debug
在 /var/lib/logrotate/logrotate.status
中没有问题,文件显示为已旋转但实际上并没有:
"/var/log/yum.log" 2017-11-27-19:0:0
"/opt/test/apache-tomcat-8.5.15-server/logs/catalina.out" 2017-12-15-3:41:1
"/var/log/boot.log" 2017-12-15-3:41:1
"/var/log/up2date" 2017-11-27-19:0:0
我是默认的 /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
# use date as a suffix of the rotated file
dateext
# 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 and btmp -- we'll rotate them here
/var/log/wtmp {
monthly
create 0664 root utmp
minsize 1M
rotate 1
}
/var/log/btmp {
missingok
monthly
create 0600 root utmp
rotate 1
}
# system-specific logs may be also be configured here.
我也有默认的/etc/cron.daily/logrotate
:
#!/bin/sh
/usr/sbin/logrotate -s /var/lib/logrotate/logrotate.status /etc/logrotate.conf
EXITVALUE=$?
if [ $EXITVALUE != 0 ]; then
/usr/bin/logger -t logrotate "ALERT exited abnormally with [$EXITVALUE]"
fi
exit 0
我请求您指导如何正确配置它。
问题与日志文件的 SELinux 文件类型有关,这些文件位于不同于 /var/log 的目录中,这意味着 logrotate 进程无权执行其任务。我发现另一个 SO thread as well as this Redhat page 帮助解决了这个问题。我发现 Redhat 文档非常有用,所以我在这里提供 2 个链接:
要回答您关于 daily
和 maxsize
的问题(如标题所示),请注意默认情况下 logrotate
每天运行一次,所以这意味着 maxsize
在那种情况下几乎没有用。该文件无论如何都会被旋转(当然,假设您没有 SELinux 挡路。)
maxsize
对每周和每月很有用,当然,因为 logrotate
仍然每天检查文件。