|
随着项目的运行,Tomcat的日志文件catalina.out的大小日益增大,现在都有好几个GB了。如果我们不做任何处理,catalina.out的文件大小将会持续增加,直到把我们的系统硬盘空间给撑爆不可。9 o6 {7 W2 E0 k- t! c2 j8 Y# q
* U& }$ V. u }7 D
当Tomcat的日志文件catalina.out的大小大于2GB时,Tomcat程序崩溃时将有可能会启动失败并且不会有任何错误信息提示。为了避免该场景的出现,我们要定期轮转catalina.out日志文件。 : I* ~& M. p% t/ h3 U2 p
这里小白使用CentOS6U5自带的logrotate程序来解决catalina.out的日志轮转问题。这种方式比较简单。在/etc/logrotate.d/目录下新建一个名为tomcat的文件, cat >/etc/logrotate.d/tomcat <<EOF
4 l8 L( r6 r% b/usr/local/apache-tomcat-8.0.28/logs/catalina.out{. C \7 E2 y8 V0 a2 j% D3 s2 C* m: r
copytruncate
2 V3 d; S7 q, d" q" q z daily
7 v' D' T h4 f7 G5 `( V rotate 7! s% G! G+ l0 ~3 ^1 |" b3 h' ~
missingok
! z, s% ]/ n0 Z( Z: d compress& [" ^: @& z! {* Y
size 16M
- A6 d9 e6 s a3 ?, b2 b% [}
3 v `+ P0 D: v9 E' ^! ^7 uEOF
; `& G! h- t2 T7 T7 F n+ n: J' _- n( G7 g0 j
以上的配置说明: /usr/local/apache-tomcat-8.0.28/logs/catalina.out{ # 要轮转的文件; s! A- R7 u, c! G5 T
copytruncate # 创建新的catalina.out副本后,截断源catalina.out文件; e( w" [4 ~3 `6 \: L! x
daily # 每天进行catalina.out文件的轮转: \7 Q8 c6 \- K! j% [' g
rotate 7 # 至多保留7个副本; P- N1 w8 u: P/ s$ C3 ]
missingok # 如果要轮转的文件丢失了,继续轮转而不报错: y, y4 `: d. @# U- D
compress # 使用压缩的方式(非常有用,节省硬盘空间;一个2~3GB的日志文件可以压缩成60MB左右)
$ |) z5 A4 v0 Q+ F! Q1 }1 i size 16M # 当catalina.out文件大于16MB时,就轮转0 y0 J7 z$ t p0 w2 U" n
}
+ f. }) E j' b( i
4 O7 a7 `/ C; `' G& ~( i; l
以上是如何工作的呢? 每天晚上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文件的轮转。 1 U, V* G; ?8 v3 g- e
/ l% c$ I; X; ]" j! ~6 p& L( o$ Z0 r7 Y/ g# B" [
以上是程序自动完成的,不需要我们干预。当然了,我们也可以使用手工的方式进行logrotate程序。在命令行进行如下运行: logrotate /etc/logrotate.conf
2 t; a0 U' \7 ]% c或者只轮转刚刚的tomcat配置文件,可以这样运行: / o, s$ I# z( U& c: s+ _
logrotate --force /etc/logrotate.d/tomcat
+ ^) w6 ~- _0 w: n4 a$ u; H 9 i6 W f. \: j- u7 U0 S3 `
6 I, D9 o5 e/ r8 y* a" g要想获得logrotate程序的更多帮助信息,可以查看其man page, " M7 }8 r5 g) \0 {: ]1 ?- }2 i0 U
可以看一下catalina.out轮转前后的文件大小, 轮转之前: du -sh *
8 \6 D8 v- Z" S7 v5 r3 T2 I...
/ S9 A' u/ F6 U2.0G catalina.out # 未轮转之前的文件大小1 O1 j! \; x8 O2 r- o; p7 t
.... @; Q* e: l( j7 U
& Y1 j6 _7 w! ?( X
轮转之后的文件大小: # du -sh catalina.out*) z( b8 I8 ]. E# B5 d1 y* W( I
2.0M catalina.out: w& O1 B$ T4 e+ ?" u( T
60M catalina.out.1.gz # 轮转之后,进行压缩,日志文件变得更小了) z% n+ z' w! l/ x" }0 O
: `0 j+ v0 p' m) Z
4 w$ L' C5 h0 B: F另外在Tomcat的logs目录,每天都会产生很多日志文件,我们也可以定期手工或使用定时任务来删除7天前的日志文件,这里使用手工的方式进行演示, cd /usr/local/apache-tomcat-8.0.28/logs
. w# M7 J7 k$ K" X# zfind -mtime +7 -exec rm -f {} \;/ \% X, E F! q9 E1 w. p9 [
- D2 h& u/ b8 g' e
" L1 [# `3 D/ l7 M' A& o
好了,就到这里了。
8 B4 t$ t0 E* @2 h& B/ B$ s- v5 P
( a% ?: N6 Y, V+ C |