易陆发现互联网技术论坛

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

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

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

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

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

x

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


* u4 U+ g% ~, e7 C4 V3 Z2 n8 U

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

5 E0 E9 v9 r% s7 t4 H

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

cat >/etc/logrotate.d/tomcat <<EOF
* b$ d7 C2 u" x6 d/usr/local/apache-tomcat-8.0.28/logs/catalina.out{
6 G- l9 Q9 T) _- V    copytruncate  }2 g3 y% a7 Q8 k5 i% n
    daily7 ]+ s( T" k) R9 H7 [: @3 [( H/ S
    rotate 7
( B* I8 i; Z% t7 N    missingok
( O+ K4 A: [5 s5 g4 ?. D( K    compress% |4 M. p+ q$ }! b
    size 16M
. [7 e6 p- q5 g8 e! F( }}3 v* |) ~, |1 A0 h  p
EOF( M8 r7 C( a: l" z% ]

% ]# l7 P( \; u$ y0 [) `

以上的配置说明:

/usr/local/apache-tomcat-8.0.28/logs/catalina.out{ # 要轮转的文件
) q4 t% x5 ]- j( o    copytruncate # 创建新的catalina.out副本后,截断源catalina.out文件' l* L% V# c$ n0 X1 \3 I9 d- @
    daily     # 每天进行catalina.out文件的轮转6 ?4 c7 j) ]" C' }" J! y
    rotate 7   # 至多保留7个副本
$ U/ M! X7 x3 w& {4 G    missingok   # 如果要轮转的文件丢失了,继续轮转而不报错
# o- W0 n! ]  S) ^5 d' ^/ y/ O    compress   # 使用压缩的方式(非常有用,节省硬盘空间;一个2~3GB的日志文件可以压缩成60MB左右)) e) H' P4 M5 w/ G2 a$ f7 `+ W
    size 16M   # 当catalina.out文件大于16MB时,就轮转- A+ h% @% I: g) V% s2 t
}( j# @/ h5 s8 s& J

( I* o) Q) T" b, y

以上是如何工作的呢?

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

    ) ]3 J- H6 o5 }: D( t* y
" i, j; b. l8 c  L0 q


/ Y- K; Y0 H  m  ^1 J; @# D& W

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

logrotate /etc/logrotate.conf

  r! J4 J$ R- m8 F1 w$ h

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


4 D; d% j3 U8 }$ O0 `) T7 H

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


8 S$ y7 x7 u* j0 f


' ^0 c7 }/ h' s2 m
" x5 y( \! d; ~4 }% O

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


3 c) \5 r! j  O) O

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

轮转之前:

du -sh *
. c3 K8 E) a- F" h9 e# i) \, U. x...! m% f$ [. v& B, O4 r& p1 p
2.0G    catalina.out # 未轮转之前的文件大小
- ?' B' F5 n$ y8 @- ?( {...3 k! T6 ?# Y0 H
2 H+ w; @0 Z8 ^0 a  k
轮转之后的文件大小:
# du -sh catalina.out*( ]! X( @- S7 M& A; O" Z
2.0M    catalina.out+ Q; h- U: j/ y* n# Y
60M catalina.out.1.gz # 轮转之后,进行压缩,日志文件变得更小了+ h: n: k/ n* {1 g) m1 d0 ^

' S+ x: m4 g6 K. A* Y0 c9 z9 j  P
' [8 @' w4 h! m1 G$ e

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

cd /usr/local/apache-tomcat-8.0.28/logs
) g3 y0 T/ i( [7 x: j( rfind -mtime +7 -exec rm -f {} \;5 E3 ]+ S; ^" B9 T0 w
# X, t( t" ^: Q; O+ y# M3 Y

3 E$ n3 }3 [8 C0 l3 S+ K5 O" L

好了,就到这里了。


# m, X1 m! t  U# _% M7 K# I! b- t! e* f) W' D
 楼主| 发表于 2018-7-5 23:19:28 | 显示全部楼层
setsid java -classpath SNAPSHOT.jar  server.JsvcStart &
您需要登录后才可以回帖 登录 | 开始注册

本版积分规则

关闭

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

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

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

GMT+8, 2026-4-8 15:51 , Processed in 0.041314 second(s), 22 queries .

Powered by Discuz! X3.4 Licensed

© 2012-2025 Discuz! Team.

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