gpt4 book ai didi

tomcat - Logrotate 文件名中包含日期的文件

转载 作者:行者123 更新时间:2023-11-28 21:43:54 26 4
gpt4 key购买 nike

我正在尝试在 RHEL 中为 tomcat6 日志配置 logrotate。目前,logrotate 对 catalina.out 日志工作正常,它被正确地旋转和压缩。

问题在于其中包含日期的文件,例如:

catalina.2012-01-20.log
catalina.2012-01-21.log
catalina.2012-01-22.log

这些文件没有被轮换。我知道我必须在配置了 catalina.out 旋转的/etc/logrotate.d/tomcat6 文件中配置这些。但是我无法配置它。

我只想每天压缩这些旧文件,当前日期日志文件除外。

谁能帮我解决这个问题!!

谢谢诺曼 A.

最佳答案

(第一次发帖,如果它看起来像一只喝醉了的蜘蛛,那么抱歉)

在使用了我们的 friend Google 之后,我不记得我在其他什么地方使用 logrotate(而不是 cron 或其他等价物)实现了一些东西。

我在/var/log/rsync/中有以下内容:

-rw-r--r-- 1 root root 1.1M Apr  9 08:13 2014-04-09 07:48:18.log
-rw-r--r-- 1 root root 1.4M Apr 11 15:20 2014-04-11 15:02:52.log
-rw-r--r-- 1 root root 1.6M Apr 11 15:42 2014-04-11 15:22:04.log
-rw-r--r-- 1 root root 1.8M Apr 12 08:01 2014-04-12 07:45:31.log
-rw-r--r-- 1 root root 2.0M Apr 13 08:10 2014-04-13 07:53:38.log
-rw-r--r-- 1 root root 2.2M Apr 14 08:19 2014-04-14 07:51:09.log
-rw-r--r-- 1 root root 2.5M Apr 15 08:05 2014-04-15 07:37:38.log
-rw-r--r-- 1 root root 2.7M Apr 16 08:11 2014-04-16 07:43:14.log

和以下 logrotate 文件:

/var/log/rsync/*.log {
daily
rotate 7
compress
delaycompress
notifempty
missingok
}

我认为这是完全合理的。但在它拒绝工作并发现它永远不会工作之后(由这篇文章提供)我想知道是否可以通过捏造使其工作。

经过多次测试和调整后,我设法通过以下方式捏造了它:

/var/log/rsync/dummy {
daily
rotate 0
create
ifempty
lastaction
/usr/bin/find /var/log/rsync/ -mtime +7 -delete
/usr/bin/find /var/log/rsync/ -mtime +1 -exec gzip -q {} \;
endscript
}

进入名为/etc/logrotate.d/local-rsync 的 logrotate 配置文件。然后创建虚拟日志文件:

touch /var/log/rsync/dummy

然后使用以下命令强制进行 logrotate:

logrotate -fv /etc/logrotate.d/local-rsync

给出:

-rw-r--r-- 1 root root  71K Apr  9 08:13 2014-04-09 07:48:18.log.gz
-rw-r--r-- 1 root root 88K Apr 11 15:20 2014-04-11 15:02:52.log.gz
-rw-r--r-- 1 root root 82K Apr 11 15:42 2014-04-11 15:22:04.log.gz
-rw-r--r-- 1 root root 84K Apr 12 08:01 2014-04-12 07:45:31.log.gz
-rw-r--r-- 1 root root 87K Apr 13 08:10 2014-04-13 07:53:38.log.gz
-rw-r--r-- 1 root root 92K Apr 14 08:19 2014-04-14 07:51:09.log.gz
-rw-r--r-- 1 root root 2.5M Apr 15 08:05 2014-04-15 07:37:38.log
-rw-r--r-- 1 root root 2.7M Apr 16 08:11 2014-04-16 07:43:14.log
-rw-r--r-- 1 root root 0 Apr 16 12:11 dummy

现在只等明天早上...

我意识到 cron 会更简洁,但是我在 logrotate 配置文件中有另一个元素,我想将两者放在一起。

虚拟文件的好处是它不占用任何空间!

您可能会发现它似乎没有在某一天旋转任何东西。我花了一段时间才弄明白为什么,但后来它变了。 find -mtime +1 是一整天(即 24*60 分钟),如果自上次创建日志以来不到 24 小时每天的 logrotate 启动,那么它有时似乎没有工作。如果这让您感到困扰,那么使用 23 小时 find -mmin +1380 可能更合适。

关于tomcat - Logrotate 文件名中包含日期的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8962477/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com