旋转异常日志的logrotate问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了旋转异常日志的logrotate问题相关的知识,希望对你有一定的参考价值。

我有一个logrotate的问题。应用程序本身生成以下日志:xxx.log,在23:59,应用程序将日志更改为:xxx.log.2019-01-05,依此类推。现在我在日志目录中得到以下内容:

xxx.log
xxx.log.2019-01-01
xxx.log.2019-01-02

等等

我需要的是想要旋转23:59创建的日志而不是触摸xxx.log文件本身。

我尝试过以下logrotate规则:

/var/log/xxx/xxx/xxx.log.* {
        daily
        missingok
        rotate 30
        compress
        notifempty
         copytruncate
        nosharedscripts
        prerotate
                bash -c "[[ ! $1 =~ *.gz ]]"
        endscript
}

但首先,logrotate不压缩最后创建的日志,它还为先前压缩的文件添加.1.gz扩展名。

答案

logrotate不会压缩最后创建的日志

你有/etc/logrotate.conf中定义的“delaycompress”吗?每logrotate man

delaycompress

将先前日志文件的压缩推迟到下一个循环周期。


它还增加了.1.gz扩展名

当您在上述手册页中时,您应该查看“扩展”选项的作用:

扩展分机

具有ext扩展名的日志文件可以在旋转后保留它。

以上是关于旋转异常日志的logrotate问题的主要内容,如果未能解决你的问题,请参考以下文章

logrotate cron 作业不旋转某些日志

我一直在尝试使用 logrotate 实用程序并将压缩日志移动到 s3,但是,它仅在强制完成时才会旋转

在 logrotate 之后不写 MariaDB 慢日志

python WatchedFileHandler 在旋转后仍然写入旧文件

“tail -f”和 logrotate 是如何工作的?

logrotate 不旋转 catalina.out