catalina.out 与 Tomcat 6.0 一起滚动

Posted

技术标签:

【中文标题】catalina.out 与 Tomcat 6.0 一起滚动【英文标题】:catalina.out rolling with Tomcat 6.0 【发布时间】:2010-11-11 22:01:19 【问题描述】:

我有一个默认的 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,以防万一。

【问题讨论】:

第一次出现“catalina.out”可能是错误的。它是每天轮换的“catalina.log”。 【参考方案1】:

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

修复是更改 conf/logging.properties:

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

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

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

【讨论】:

只是想提一下,这不会停止在其 log4j.properties 文件中指定类似内容的应用程序: log4j.rootLogger=DEBUG,stdout,logfile 这些仍然被转储到标准输出并放置在 catalina 。出去。只是需要注意... 如果没有登录 catalina.out,日志会去哪里?我主要参考 catalina.out 进行调试并需要这些日志。 @RakeshRakshit 确切的输出文件被指定为 FileHandler 参数的一部分 - 请参阅FileHandler。根据 FileHandler 和 tomcat 的默认值,它很可能最终成为 catalina.YYYY-MM-DD.txt。【参考方案2】:

您好,您可能想试试这个解决方案

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

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

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

【讨论】:

当我在配置/var/log/tomcat/catalina.out 后执行/usr/sbin/logrotate /etc/logrotate.conf 仍然不能解决我旋转catalina.out 文件的问题 另一件事是这将每天轮换。如果我想在日志文件的大小达到最大分配大小时进行轮换怎么办?【参考方案3】:

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

步骤:-

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

2) 粘贴到行下

按大小旋转

/opt/OS/OS2/logs/catalina.out 复制截断 每日 旋转 30 压缩 不见不散 尺寸 20M

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

按日期轮换

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

复制截断

日期文本

每天

旋转 30

压缩

不见不散

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

3) 重启服务器

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

谢谢你:)

【讨论】:

我更喜欢这个答案,因为它在参数中有 CR/LF(否则你可能会在几天内得到一个“错误的旋转计数”),并且可以清楚地粘贴大小和日期的选项。顺便说一句,我不需要第 3 点(CentoOS 7.x),最后你可以通过/usr/sbin/logrotate /etc/logrotate.conf 检查一切是否适合你,注意它会在目录中旋转(需要 root 访问权限) 是第 3 项)不需要重启服务器,详情见unix.stackexchange.com/questions/116136/…。【参考方案4】:

我在 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 文件。

【讨论】:

【参考方案5】:

我还注意到我的 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

【讨论】:

以上是关于catalina.out 与 Tomcat 6.0 一起滚动的主要内容,如果未能解决你的问题,请参考以下文章

tomcat的catalina.out日志按天生成

TOMCAT的catalina.out日志没有内容输出

如何处理Tomcat日志catalina.out日志文件过大的问题

tomcat 日志禁用

无法消除 catalina.out 中的 Tomcat 缓存警告

怎么通过tomcat的catalina.out查看日志