logrotate 不尊重旋转参数

logrotate 不尊重旋转参数

我在使用 logrotate 时遇到了一些麻烦,它似乎没有按照我的指示去做。

环境:

  • 森托斯 6.4
  • 对数旋转 3.7.8

我的 /etc/logrotate.conf 文件具有以下内容:

# rotate log files weekly
daily

# keep 4 weeks worth of backlogs
rotate 30

# 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
compresscmd /usr/bin/bzip2
uncompresscmd /usr/bin/bunzip2
compressext .bz2

# RPM packages drop log rotation information into this directory
include /etc/logrotate.d

我遇到问题的 logrotate 文件是这样的(对于 elasticsearch,位于 /etc/logrotate.d/elasticsearch):

/var/log/elasticsearch/*.log {
    missingok
    notifempty
    copytruncate
    postrotate
        rm -rf /var/log/elasticsearch/*.log.$(date +%Y)*
    size 1k
    rotate 7
    daily
}

首先,它不尊重我的rotate 7配置,当我运行时logrotate -d /etc/logrotate.conf,我得到一行内容:

旋转日志 /var/log/elasticsearch/gravity-es-prod02.log,log->rotateCount 为 30

...还有一堆声明说它正在轮换 30 个不同的 *.bz2 文件。

gravity-es-prod02.log.2015-12-01其次,尽管没有启用 dateext,但我仍然以指定的日志文件(以及自上次手动清理以来的任何先前日期)结束。这些也没有被清理干净,所以我添加了 postrotate 行来手动清理它,但显然这也不能正常工作。

编辑 运行 logrotate 脚本的 cron 文件非常标准:

#> cat /etc/cron.daily/logrotate 
#!/bin/sh

/usr/sbin/logrotate /etc/logrotate.conf >/dev/null 2>&1
EXITVALUE=$?
if [ $EXITVALUE != 0 ]; then
    /usr/bin/logger -t logrotate "ALERT exited abnormally with [$EXITVALUE]"
fi
exit 0

答案1

我在您提供的脚本中发现了一个错误(缺少结束脚本):

postrotate
    rm -rf /var/log/elasticsearch/*.log.$(date +%Y)*
endscript

我相信这部分失败并以某种方式应用此日志模式的全局设置。

相关内容