42

我有一个默认的 tomcat 安装,没有更改日志记录配置。日志文件(特别是 catalina.out)似乎正在(每天)正确滚动。

然而,除了每日日志之外,还有一个 catalina.out 文件,该文件还在继续增长。这是我需要解决的问题,即每天清除它(或者如果可能的话完全删除它)

有人可以解释这里发生了什么以及控制该日志文件大小的最佳策略吗?

只是为了澄清输出被同时写入 catalina.out 和每日日志

-rw-r--r--  1 solr solr   90920663 Jul 18 01:16 logs/catalina.2009-07-18.log
-rw-r--r--  1 solr solr     238010 Jul 18 01:16 logs/catalina.out

设置swallowOutput 似乎没有任何区别。

在tomcat下运行的应用程序是solr,以防万一。

4

5 回答 5

69

修复它,原来标准的日志记录配置定义了一个文件记录器和一个控制台记录器。文件记录器转到每日 catalina 日志,控制台记录器写入 catalina.out。

修复是更改 conf/logging.properties:

.handlers = 1catalina.org.apache.juli.FileHandler, java.util.logging.ConsoleHandler

.handlers = 1catalina.org.apache.juli.FileHandler

这会阻止任何东西被写入 catalina.out

于 2009-07-18T05:49:20.733 回答
4

嗨,您可能想尝试此解决方案

http://java.dzone.com/articles/how-rotate-tomcat-catalinaout

它使用 cronjob (logrotate) 来复制、压缩和清理你的 catalina.out,如果你看一下 logrotate,你会发现它有很多额外的功能。它不会干扰日常日志,除非您对其进行配置。当我遇到同样的问题时,我发现它很有帮助。

顺便说一句,删除控制台处理程序只会影响 Tomcat 生成的消息。

于 2011-03-10T11:16:26.197 回答
3

您可以通过配置旋转您的 catalina.out 文件:-

脚步:-

  • 1) 转到 /etc/logrotate.d 并创建文件 tomcat

  • 2)粘贴到下面的行

  • 按大小旋转

/opt/OS/OS2/logs/catalina.out {
copytruncate
daily
rotate 30
compress
missingok
size 20M
}

-- 大小 - 如果大小大于 20MB,则备份 catelina.out

或者

  • 按日期轮换

/opt/deadpool/apache-tomcat/logs/catalina.out {

复制截断

日期文本

日常

旋转 30

压缩

失踪的

}

  • rotate - 保存最后 30 次旋转
  • dateext - 每天备份 catelina.out
  • 每天 - 每天轮换
  • compress - 以压缩形式旋转
  • missingok - 如果旋转中缺少某些东西,它不会产生任何影响

3)重启服务器

它对我有用:) 希望这对某人有所帮助。

谢谢 :)

于 2016-07-01T06:00:56.680 回答
2

我在 Ubuntu 11.04 SOLR 服务器上遇到了同样的问题,而 catalina.out 文件几乎是 1GB。后

更改 logging.properties:

.handlers = 1catalina.org.apache.juli.FileHandler, java.util.logging.ConsoleHandler

.handlers = 1catalina.org.apache.juli.FileHandler

这会停止记录到 catalina.out

您可以在Ubuntu Linux的/etc/tomcat6/文件夹中找到logging.properties文件。

于 2012-03-28T12:21:30.407 回答
0

我还注意到我的 tomcat 日志文件夹 ( /usr/local/tomcat/logs) 非常大。要检查日志文件夹的大小,请执行以下操作du -hs /usr/local/tomcat/logs/。通过设置一个每天晚上清理文件的 cron 来解决这个问题,或者您可以手动运行这些命令。这是删除 5 天前的文件的 shell 脚本

#!/bin/sh
find /usr/local/tomcat/logs -name 'catalina.*.log' -mtime +5 -print0 | xargs -0 rm -f
find /usr/local/tomcat/logs -name 'localhost_access_log.*.txt' -mtime +5 -print0 | xargs -0 rm -f
于 2016-05-26T15:39:10.590 回答