找回密码
 注册
查看: 4651|回复: 1

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

[复制链接]

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
发表于 2017-9-7 09:18:43 | 显示全部楼层 |阅读模式

随着项目的运行,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

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
 楼主| 发表于 2018-7-5 23:19:28 | 显示全部楼层
setsid java -classpath SNAPSHOT.jar  server.JsvcStart &
您需要登录后才可以回帖 登录 | 注册

本版积分规则

返回首页|Archiver|手机版|小黑屋|易陆发现技术论坛 ( 蜀ICP备2026014127号-1 )

GMT+8, 2026-6-12 00:10 , Processed in 0.017971 second(s), 23 queries .

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表