4
回答
linux环境下tomcat中catalina.out文件过大问题
终于搞明白,存储TCO原来是这样算的>>>   

在公司生成环境中,日常维护发现Linux环境中的tomcat8 会出现catalina.out会随着时间,变得越来越大,最后占满占个磁盘空间。

在查看catalina.out的内容,发现其中全部是System.out.println()的内容,当然这在写代码的时候,打印日志尽量采用Log4j等日志工具进行输入日志,不采用sysout的方式打印日志外。难道apache tomcat的项目组就没有发现这个严重的问题?但是在windows环境中就不会出现这个问题。还是说linux和windows的两者环境处理方式不对。

还有就是除了使用第三方工具进行分隔catalina.out文件外,有没有其他办法解决?

我想应该很多人都遇到这个问题了。

<无标签>
举报
CapJes
发帖于1周前 4回/80阅
共有4个答案 最后回答: 1周前

############################################################
# Handler specific properties.
# Describes specific configuration info for Handlers.
############################################################

1catalina.org.apache.juli.FileHandler.level = OFF
1catalina.org.apache.juli.FileHandler.directory = ${catalina.base}/logs
1catalina.org.apache.juli.FileHandler.prefix = catalina.

2localhost.org.apache.juli.FileHandler.level = OFF
2localhost.org.apache.juli.FileHandler.directory = ${catalina.base}/logs
2localhost.org.apache.juli.FileHandler.prefix = localhost.

3manager.org.apache.juli.FileHandler.level = OFF
3manager.org.apache.juli.FileHandler.directory = ${catalina.base}/logs
3manager.org.apache.juli.FileHandler.prefix = manager.

4host-manager.org.apache.juli.FileHandler.level = OFF
4host-manager.org.apache.juli.FileHandler.directory = ${catalina.base}/logs
4host-manager.org.apache.juli.FileHandler.prefix = host-manager.

java.util.logging.ConsoleHandler.level = OFF
java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter

我试过了,上面这配置,没用。我设置错误?

 

这个锅tomcat表示我不背。这个文件是tomcat以daemon方式运行的时候,将终端上的日志以&>> catalina.out的形式打印到文件中的,等于是终端重定向,将终端上的内容全部写入这个文件的,不属于log4j管理的文件,自然用log4j的滚动策略无效。

 

如果你用的是各大发行版自带的tomcat,你会发现里面带有一个logrotate脚本,使用logrotate对catalina.out进行切割滚动。

--- 共有 2 条评论 ---
Feng_Yu 回复 @CapJes : 都说了这个不是tomcat的锅,你也不应该把这个问题怪罪于Apache组织,这是程序员自己的锅。办法也不是没有,你看我的上面的回复啊,发行版自带的tomcat明明就有logrotate滚动日志,你自己可以用logrotate滚日志。当然你也可以把CATALINA_OUT变量设置为/dev/null 1周前 回复
CapJes首先,我知道Log4j不能处理system.out.println的打印输出,但是catalina.out记录了所有的system.out.println的内容,才导致此文件逐渐增大的。 我想问的是,apache tomcat的开源项目组就没有发现这个问题? 那么,现在除了修改systemout.println将打印输出使用Log4j进行输出到log文件中,有其他方法没? 1周前 回复
顶部