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

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

[复制链接]

1

主题

0

回帖

12

积分

管理员

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

随着项目的运行,Tomcat的日志文件catalina.out的大小日益增大,现在都有好几个GB了。如果我们不做任何处理,catalina.out的文件大小将会持续增加,直到把我们的系统硬盘空间给撑爆不可。- ~0 ]* {  G( w% |8 ~4 |/ _5 p$ F! w( ~

3 i2 Q; v3 Y: r9 k

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


  ?5 a3 ]) e& b; p; @5 q

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

cat >/etc/logrotate.d/tomcat <<EOF% I5 Q# d! t; o  C$ e
/usr/local/apache-tomcat-8.0.28/logs/catalina.out{
4 e! p) v. n" ^- C  R    copytruncate
0 Q3 I1 X* }/ S. l    daily
# l, b' e, [+ c- R, @) g4 y    rotate 7
/ J; y- ]" G% n! ]( X% h& N  H7 d    missingok
* ?4 \  D$ N8 k$ x    compress9 b* y, E0 r% a
    size 16M# @0 K# C6 K) X% B6 M- P$ c( c
}+ O) a8 Z- y# l; @7 g
EOF
4 E4 _8 R& q+ \( j8 x$ p3 H/ U+ u( S3 ~) e

以上的配置说明:

/usr/local/apache-tomcat-8.0.28/logs/catalina.out{ # 要轮转的文件
* t7 L2 {5 \+ k$ t/ Y  q    copytruncate # 创建新的catalina.out副本后,截断源catalina.out文件
- I: W9 `! ^# e4 t2 y) L# d2 u    daily     # 每天进行catalina.out文件的轮转. p  V9 T9 J* r" [  g% f; i- Q
    rotate 7   # 至多保留7个副本
2 T9 V' y7 v8 |9 w( c; [    missingok   # 如果要轮转的文件丢失了,继续轮转而不报错4 a$ @) m; y4 S# U7 T
    compress   # 使用压缩的方式(非常有用,节省硬盘空间;一个2~3GB的日志文件可以压缩成60MB左右)
8 i6 v7 x$ z; A    size 16M   # 当catalina.out文件大于16MB时,就轮转. y) ?* z2 x/ T8 G& w2 ?5 W9 X
}
; X# Q6 T% ~1 x% l8 e. w


) z; h8 `8 h$ P+ t! ]# S! h

以上是如何工作的呢?

  • 每天晚上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文件的轮转。
    % C) ?4 c6 W' h0 t; `9 B. Z

! l9 J0 Z! y+ x5 L


6 c, }& n% h4 E0 \# y# k2 p# c6 e

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

logrotate /etc/logrotate.conf

. y4 h2 P/ K" X! y- ^

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


& j/ O  l9 C- m7 P6 s" g) {# }

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


3 W! R: W+ R* P6 |% Q

! f! @" H& E# X, _7 U

. l' [' z, E/ ]: n4 i

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


5 V, f" Y4 Q& m4 A# o& R- D

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

轮转之前:

du -sh *5 R- D3 B" W; g. n- r
...& ?7 I; R2 y" j) Q0 z6 w
2.0G    catalina.out # 未轮转之前的文件大小8 n! Y8 S7 {* {1 d* Q9 k, p
...
5 T9 r1 q  u3 Z$ y
' D# U( u! F8 c5 C轮转之后的文件大小:
# du -sh catalina.out*# g3 ?5 }9 x- ~, `
2.0M    catalina.out
( ]  \2 L. Z( J, l* e! w7 \- S  R60M catalina.out.1.gz # 轮转之后,进行压缩,日志文件变得更小了
- {. l8 q! a: g8 S1 j! f4 E
0 ?* m# b* J9 r( V4 E

* n$ t% `2 X4 q% f3 B& {

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

cd /usr/local/apache-tomcat-8.0.28/logs
1 K/ h3 I( N/ t  h2 V% m7 Ufind -mtime +7 -exec rm -f {} \;
  ^) K+ V7 s8 ]5 Z1 z/ g8 s' D8 J# r* L6 w- A

8 |4 P. \  Y4 [: t+ h  h

好了,就到这里了。


+ C- g+ c6 V8 T9 E& a5 V% k; O5 J2 e2 s! R* m

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-11 23:15 , Processed in 0.063416 second(s), 22 queries .

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

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