文档章节

解决Tomcat catalina.out 不断成长导致档案过大的问题

成都老码农
 成都老码农
发布于 2017/02/17 14:34
字数 752
阅读 34
收藏 0

Tomcat的网站上的说法http://wiki.apache.org/tomcat/FAQ/Logging#Q6:

System.out 和 System.err 都被打印到 catalina.out。

catalina.out 不会 rotate。

如果您使用了 logging 机制,就不会有任何东西被写到标准输出了,所以这应该不会是个问题。

可是实际上发现,虽然有设了log4j之类的 logging 机制,但写程序的人如果还是写成System.out.println()或是遇到exception时都来个e.printStackTrace(),这些输出最后还是通通送到catalina.out去了。日子久了,这个档案还是会日渐变大起来,如果没有加以管理最后就会长大成好几GB的庞然大物。(这时千万不要再用vi去开它了。)

网络上找了一下,针对在Linux环境下执行Tomcat的部份,发现有个不错的工具软件cronolog可以协助Web Server之类的做 log 檔的 rotate,详细的运作原理可能大家得自己去这个网站上查,我的认知大致如下:

Tomcat先把输出写到 console(标准输出) 然后透过 pipe (|) 转为 cronolog 的输入,由cronolog针对一个事先给定的文件名的命名规则,去过滤数据,定期关闭旧文件,然后再开启新档。如果我们将文件名的命名规则设为catalina.out.%Y-%m-%d,就可以做到每天开一个新的catalina.out.yyyy-mm-dd的档案了。

以下是简单的过程说明:
1.安装cronolog 
2.修改catalina.sh 
3.重新启动Tomcat

1 安装cronolog 
wget http://cronolog.org/download/cronolog-1.6.2.tar.gz
tar zxvf cronolog-1.6.2.tar.gz
cd cronolog-1.6.2
./configure
make
make install
用which cronolog可以查到安装的路径,默认应该是/usr/local/sbin/cronolog,这个路径待会在修改catalina.sh时会用到。
2 修改catalina.sh 
Tomcat 6.0.24的版本为例
2.1 第一步

if [ -z "$CATALINA_OUT" ] ; then
CATALINA_OUT="$CATALINA_BASE"/logs/catalina.out
fi
修改为
if [ -z "$CATALINA_OUT" ] ; then
CATALINA_OUT="$CATALINA_BASE"/logs/catalina.out.%Y-%m-%d
fi
2.2 第二步

touch "$CATALINA_OUT"
改为
#touch "$CATALINA_OUT"
2.3 第三步

org.apache.catalina.startup.Bootstrap "$@" start /
>> "$CATALINA_OUT" 2>&1 &
修改为
org.apache.catalina.startup.Bootstrap "$@" start 2>&1 /
| /usr/local/sbin/cronolog "$CATALINA_OUT" >> /dev/null &
2.4 重新启动Tomcat 
service tomcat restart 
可以在Tomcat的logs目录底下找到以系统日期为结尾的catalina.out.yyyy-mm-dd的档案,这样子就成功了。
后续就是持续观察看看是不是每天都有产生一个新的catalina.out.yyyy-mm-dd档案。然后再安排定期删除这些较旧的log檔即可。

 

另一个解决方案:

http://rwl6813021.iteye.com/blog/752416

一般在部署Tomcat后,运行久了,catalina.out文件会越来越大,对系统的稳定造成了一定的影响。 
可通过修改conf/logging.properties日志配置文件来屏蔽掉这部分的日志信息。 

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

将level级别设置成WARNING就可以大量减少日志的输出,当然也可以设置成OFF,直接禁用掉。 

一般日志的级别有: 
SEVERE (highest value) > WARNING > INFO > CONFIG > FINE > FINER > FINEST (lowest value) 

© 著作权归作者所有

共有 人打赏支持
成都老码农
粉丝 5
博文 37
码字总数 73993
作品 0
成都
程序员
私信 提问
如何处理Tomcat日志catalina.out日志文件过大的问题

如何处理Tomcat日志catalina.out日志文件过大的问题 tomcat默认日志文件为catalina.out,随着系统运行时间的增加,该日志文件大小会不断增大,甚至增大到G级。不仅会导致我们无法使用常规工具...

hotsmile
2016/10/27
130
0
使用cronolog实现tomcat日志切割

背景: Tomcat的日志catalina.out在使用过程中会不断增长,当日志过大时,可能会对tomcat的性能产生影响。 使用日志切割的方法,可以有效解决日志过大的问题。它可以把日志按天进行切割存储,...

icenycmh
2016/10/14
0
0
Tomcat的catalina.out文件过大问题(logrotate方式)

问题 Tomcat在Cent OS上面的日志文件catalina.out达到了4G多。 解决 logrotate 创建配置文件 编写配置文件: 配置说明: :需要归档的日志路径 :复制截断模式 :每天触发一次 :最多7个日志文...

亚林瓜子
2018/09/27
0
2
catalina.out文件过大

文件过大占服务器内存太大的时候系统会变的很慢,然后打不开,适当的删除些tomcat下的log系统就正常了。内存够了。所以可以适当的删除catalina.out的文件,这个文件在每次重启tomcat的时候会...

Carl_
2014/08/28
0
2
Tomcat内存溢出快速解决办法

cd /opt/apache-tomcat-6.0.29(这是你linux上存放tomcat的路径) 这中间你要去查看日志到底是tomcat是什么问题,定位到那个tomcat的问题。 cd /bin 使用Tomcat关闭命令(一般在运行的项目这...

Villain丶Cc
2018/05/27
0
0

没有更多内容

加载失败,请刷新页面

加载更多

TiDB 3.0 Beta Release Notes

2019 年 1 月 19 日,TiDB 发布 3.0 Beta 版,对应 master branch 的 TiDB-Ansible。相比 2.1 版本,该版本对系统稳定性、优化器、统计信息以及执行引擎做了很多改进。 TiDB 新特性 支持 Vi...

TiDB
7分钟前
0
0
从拼多多优惠券事件看到的一些反思

本文由云+社区发表 作者:颜国平 摘要:最近几年,电商行业飞速发展,各种创业公司犹如雨后春笋大量涌现,商家通过各种活动形式的补贴来获取用户、培养用户的消费习惯,即将到来的“ 购物狂欢...

腾讯云加社区
8分钟前
0
0
记录一次BUG

1: 请求注册页面时生成一个UUID, 并且将UUID隐藏在页面中并且添加到session中去。 2: 发送短信时获取手机号和UUID,将两者发送至服务器 3: 先判断UUID和session中UUID是否一致。 不一致就...

专业写BUG的程序员
13分钟前
0
0
阿里云漏洞提示:phpMyAdmin <=4.8.1 checkPageValidity函数缺陷可导致GETSHELL

如题: phpMyAdmin <=4.8.1 后台checkPageValidity函数缺陷可导致GETSHELL 即:checkPageValidity函数对外部输入过滤不严,可导致本地包含任意文件。进一步地攻击者可通过注入代码到特定文件...

408582708
13分钟前
0
0
PyTorch可视化理解卷积神经网络

摘要: 神经网络工具像一个黑匣子,无法知道它的中间是如何处理的。本文使用图片加代码的形式讲解CNN网络,并对每层的输出进行可视化,便于初学者理解,可以动手实践下哦! 如今,机器已经能...

阿里云官方博客
25分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部