天天看点

解决Tomcat日志文件catalina.out文件过大问题

随着项目的运行,Tomcat的日志文件catalina.out的大小日益增大,现在都有好几个GB了。如果我们不做任何处理,catalina.out的文件大小将会持续增加,直到把我们的系统硬盘空间给撑爆不可。

当Tomcat的日志文件catalina.out的大小大于2GB时,Tomcat程序崩溃时将有可能会启动失败并且不会有任何错误信息提示。为了避免该场景的出现,我们要定期轮转catalina.out日志文件。

这里小白使用CentOS6U5自带的logrotate程序来解决catalina.out的日志轮转问题。这种方式比较简单。在/etc/logrotate.d/目录下新建一个名为tomcat的文件,

<code>cat</code> <code>&gt;</code><code>/etc/logrotate</code><code>.d</code><code>/tomcat</code> <code>&lt;&lt;EOF</code>

<code>/usr/local/apache-tomcat-8</code><code>.0.28</code><code>/logs/catalina</code><code>.out{</code>

<code>    </code><code>copytruncate</code>

<code>    </code><code>daily</code>

<code>    </code><code>rotate 7</code>

<code>    </code><code>missingok</code>

<code>    </code><code>compress</code>

<code>    </code><code>size 16M</code>

<code>}</code>

<code>EOF</code>

以上的配置说明:

<code>/usr/local/apache-tomcat-8</code><code>.0.28</code><code>/logs/catalina</code><code>.out{ </code><code># 要轮转的文件</code>

<code>    </code><code>copytruncate </code><code># 创建新的catalina.out副本后,截断源catalina.out文件</code>

<code>    </code><code>daily     </code><code># 每天进行catalina.out文件的轮转</code>

<code>    </code><code>rotate 7   </code><code># 至多保留7个副本</code>

<code>    </code><code>missingok   </code><code># 如果要轮转的文件丢失了,继续轮转而不报错</code>

<code>    </code><code>compress   </code><code># 使用压缩的方式(非常有用,节省硬盘空间;一个2~3GB的日志文件可以压缩成60MB左右)</code>

<code>    </code><code>size 16M   </code><code># 当catalina.out文件大于16MB时,就轮转</code>

以上是如何工作的呢?

每天晚上crond守护进程会运行在/etc/cron.daily目录中的任务列表;

与logrotate相关的脚本也在/etc/cron.daily目录中。运行的方式为"/usr/bin/logrotate /etc/logrotate.conf";

/etc/logrotate.conf文件include了/etc/logrotate.d/目录下的所有文件。还包括我们上面刚创建的tomcat文件;

/etc/logrotate.d/tomcat文件会触发/usr/local/apache-tomcat-8.0.28/logs/catalina.out文件的轮转。

以上是程序自动完成的,不需要我们干预。当然了,我们也可以使用手工的方式进行logrotate程序。在命令行进行如下运行:

<code>logrotate </code><code>/etc/logrotate</code><code>.conf</code>

或者只轮转刚刚的tomcat配置文件,可以这样运行:

<code>logrotate --force </code><code>/etc/logrotate</code><code>.d</code><code>/tomcat</code>

要想获得logrotate程序的更多帮助信息,可以查看其man page,

<code>man</code> <code>logrotate</code>

可以看一下catalina.out轮转前后的文件大小,

轮转之前:

<code>du</code> <code>-sh *</code>

<code>...</code>

<code>2.0G    catalina.out </code><code># 未轮转之前的文件大小</code>

轮转之后的文件大小:

<code># du -sh catalina.out*</code>

<code>2.0M    catalina.out</code>

<code>60M catalina.out.1.gz </code><code># 轮转之后,进行压缩,日志文件变得更小了</code>

另外在Tomcat的logs目录,每天都会产生很多日志文件,我们也可以定期手工或使用定时任务来删除7天前的日志文件,这里使用手工的方式进行演示,

<code>cd</code> <code>/usr/local/apache-tomcat-8</code><code>.0.28</code><code>/logs</code>

<code>find</code> <code>-mtime +7 -</code><code>exec</code> <code>rm</code> <code>-f {} \;</code>

好了,就到这里了。希望可以帮到有需要的童鞋。

版权声明:原创作品,如需转载,请注明出处。否则将追究法律责任

本文转自    bigstone2012   51CTO博客,原文链接:http://blog.51cto.com/lavenliu/1765791

继续阅读