最近线上的项目因为同一个tomcat安装了多个工程,并且工程中存在循环调用打印接口日志的情况,造成了tomcat的catalina.out异常庞大,不到一个月时间,竟然达到了快8G。刚好发生异常情况需要查看该日志,发现普通的编辑工具都打不开。于是想到把日志分割为多个小的日志,网上找到工具:超大文件分割工具-Ultra File Splitter 4.03中文绿色版。用还是好用,但是这样也不是办法啊。如果后面单个日志文件太大,总有一天会撑爆硬盘,于是再找资料,发现了cronolog,一款可以让linux环境的tomcat的catalina.out文件安装特定规则(比如日期)生成不同的日志文件的工具。
具体的使用如下:
Tomcat输出catalina.out文件,数据主要来源为:System.out 和 System.err 在控制台上直接输出的信息。为了减少日志输出的压力,规范代码习惯,编码时应避免使用System.out.println()和e.printStackTrace()。
使用cronolog工具分割
A、 cronolog工具下载
官方 http://cronolog.org/download/index.html
B、 cronolog编译安装
[TSP@tsp-dev-webservice ~]$ tar xvf cronolog-1.6.2.tar.gz
[TSP@tsp-dev-webservice cronolog-1.6.2]$ ./configure
[TSP@tsp-dev-webservice cronolog-1.6.2]$ make
[TSP@tsp-dev-webservice cronolog-1.6.2]$ sudo make install
查看cronolog安装后所在目录(验证安装是否成功)
# which cronolog
一般情况下显示为:/usr/local/sbin/cronolog
C、 修改Tomcat启动脚本catalina.sh
a、 修改输出日志路径
修改:
if [ -z "$CATALINA_OUT" ] ; then
CATALINA_OUT="$CATALINA_BASE"/logs/catalina.out
fi
为:
if [ -z "$CATALINA_OUT" ] ; then
CATALINA_OUT="$CATALINA_BASE"/logs/catalina.%Y-%m-%d.out
fi
b、 删除生成日志文件
注释:
touch "$CATALINA_OUT"
为:
#touch "$CATALINA_OUT"
c、 修改启动脚本参数(有2处)
修改:
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 &
D、 重启Tomcat
Tomcat输出日志文件分割成功,输出log文件格式为:catalina.2014-08-15.out 类型。