centos 日志每日旋转+最大大小不旋转

7bsow1i6  于 2022-11-07  发布在  其他
关注(0)|答案(2)|浏览(159)

我已经安装了CentOS 7.4和logrotate 3.8.6。我在/etc/logrotate.d/下有一个自定义的logrotate文件来旋转Tomcat上的一些日志(例如catalina.out),Tomcat安装在同一台机器上。

/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

我希望您能指导我如何正确地配置它。

o3imoua4

o3imoua41#

这个问题与日志文件的SELinux文件类型有关,日志文件位于不同于/var/log的目录中,这意味着logrotate进程没有访问权限来执行其任务。我找到了这个SO thread和这个Redhat page,它们帮助解决了这个问题。我发现Redhat文档非常有帮助,所以我在这里提供了两个链接:

qgzx9mmu

qgzx9mmu2#

为了回答你关于dailymaxsize的问题(如标题所示),请注意,默认情况下logrotate每天运行一次,因此这意味着maxsize在这种情况下几乎没有用处。无论如何,文件都会被旋转(当然,假设你没有SELinux)。
当然,maxsize对于每周和每月都很有用,因为logrotate仍然每天检查文件。
请注意,logrotate每天运行只是因为在许多系统上,默认情况下是这样安装的。

$ ls -l /etc/cron.daily
...
-rwxr-xr-x 1 root root  372 Aug 21  2017 logrotate
...

将该文件移动到/etc/cron.hourly是安全的,现在打开daily选项将非常有用:

$ sudo mv -i /etc/cron.daily/logrotate /etc/cron.hourly/logrotate

**警告:**像Ubuntu这样的系统很可能会在logrotate软件包的下一次更新时重新安装每日文件,这种情况很少发生,但也有可能发生。我不知道有什么干净的方法可以避免这个问题。最糟糕的方法是创建一个同名的空文件,这样会阻止打包程序从软件包中添加文件。

$ sudo touch /etc/cron.daily/logrotate

或者编辑并添加注解,例如:


# placeholder to prevent installer from changing this file

相关问题