易陆发现互联网技术论坛

 找回密码
 开始注册
查看: 4651|回复: 1
收起左侧

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

[复制链接]
发表于 2017-9-7 09:18:43 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?开始注册

x

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


% t+ N. @$ X( F7 U( A$ o) n% ]5 K, |

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

- D2 k, L' v, {  f, e' H- K

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

cat >/etc/logrotate.d/tomcat <<EOF
9 t0 z. ^- d' l+ R8 a5 }' G# _6 R% N/usr/local/apache-tomcat-8.0.28/logs/catalina.out{+ q4 f8 r* g* J9 J, D
    copytruncate
7 [' Y  s2 S* t    daily. w# i5 U- D4 {& h+ T
    rotate 7
5 v. K0 s0 u4 p# @  d" Z! v    missingok
$ T- c4 N8 q! [9 a    compress
9 T* y/ T6 Q9 b: l+ ^6 |    size 16M+ U# Q3 i- |0 e6 G
}
9 Y  I' F) X0 ?# kEOF% g  |' Z3 }; Y3 {
, \" Q, t4 K4 y

以上的配置说明:

/usr/local/apache-tomcat-8.0.28/logs/catalina.out{ # 要轮转的文件4 ?' b% a) J$ w+ v3 m4 Q
    copytruncate # 创建新的catalina.out副本后,截断源catalina.out文件
* q0 R) W' X+ P0 A; f6 j0 \/ y    daily     # 每天进行catalina.out文件的轮转4 i/ o; f' \  X9 g" j) I" E2 z& R
    rotate 7   # 至多保留7个副本, G% A. j5 x% z
    missingok   # 如果要轮转的文件丢失了,继续轮转而不报错
& F3 [+ q' t/ u9 H8 e    compress   # 使用压缩的方式(非常有用,节省硬盘空间;一个2~3GB的日志文件可以压缩成60MB左右)
( k% Z3 ^6 @" Q4 M) M    size 16M   # 当catalina.out文件大于16MB时,就轮转7 x1 C! K1 i+ T1 u
}
2 H: E1 n% h2 W


. ]/ M0 f9 ~; f6 n3 T

以上是如何工作的呢?

  • 每天晚上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文件的轮转。

    5 b  N+ ^" F: `; t# M" S! Q7 y$ G, w
6 |/ L, K2 }$ o6 u4 l1 Z


7 o. g. n2 H/ C

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

logrotate /etc/logrotate.conf


$ F3 c8 c% x3 w- }8 ~7 f

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

$ J0 D) c% n( ^% g: P& u2 {. }* f

logrotate --force /etc/logrotate.d/tomcat


3 f6 x9 E% f& |/ ~. z9 \' ?

! Z2 j1 V+ n# U2 h5 a' Z) w
0 Q3 v4 z3 I! B1 @

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

- g6 J7 q- O" b2 m( T7 r* b5 s

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

轮转之前:

du -sh *
; t3 W* H8 T' A( h. U) f5 x..." g$ r: K- H% I( x
2.0G    catalina.out # 未轮转之前的文件大小; D7 R* ~3 l  y* o+ ~' P/ {9 E
...* D! u/ k. r  X  V/ g+ g
9 [8 I7 L" M8 S; h7 {
轮转之后的文件大小:
# du -sh catalina.out*
8 N* h& r. t( y  U( u7 x
2.0M    catalina.out
1 b, U6 ~5 F1 ^# t8 ]  B60M catalina.out.1.gz # 轮转之后,进行压缩,日志文件变得更小了. a( c5 ^. _  x# ]; p
" ^; g+ v1 G# {: C) I
1 p8 G! s: x6 x

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

cd /usr/local/apache-tomcat-8.0.28/logs! d. j" h/ P" J/ [" n% {
find -mtime +7 -exec rm -f {} \;
* s" ?+ @! `8 a" @+ N. ]  b# r1 O; j6 C% S

' e+ b# U5 b4 X" p7 Y8 y% u

好了,就到这里了。


4 N2 R, l' v/ _( J! U: V4 K/ g( e7 f  [4 M5 n* h
 楼主| 发表于 2018-7-5 23:19:28 | 显示全部楼层
setsid java -classpath SNAPSHOT.jar  server.JsvcStart &
您需要登录后才可以回帖 登录 | 开始注册

本版积分规则

关闭

站长推荐上一条 /4 下一条

北京云银创陇科技有限公司以云计算运维,代码开发

QQ|返回首页|Archiver|小黑屋|易陆发现技术论坛 点击这里给我发消息

GMT+8, 2026-4-8 15:53 , Processed in 0.046984 second(s), 23 queries .

Powered by Discuz! X3.4 Licensed

© 2012-2025 Discuz! Team.

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