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

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

[复制链接]

1

主题

0

回帖

12

积分

管理员

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

随着项目的运行,Tomcat的日志文件catalina.out的大小日益增大,现在都有好几个GB了。如果我们不做任何处理,catalina.out的文件大小将会持续增加,直到把我们的系统硬盘空间给撑爆不可。
; J: J/ A2 p# J$ O+ q  K

- S! A1 u) b; Z, }. W

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


% U4 W9 s3 ?/ u' r

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

cat >/etc/logrotate.d/tomcat <<EOF
' T5 \3 C2 f; p: Q1 l7 H, m+ L$ ^/ r/usr/local/apache-tomcat-8.0.28/logs/catalina.out{
; K4 J  e. |$ W' D! k4 c* h    copytruncate
. {: J! W! x9 i    daily/ b4 o4 V8 p8 \  r9 A) j/ y
    rotate 79 u  w2 `9 Y" w3 T0 K
    missingok
3 i; m8 L0 l4 {- w& E: H    compress' W& V1 f1 Z6 i- Z) ~; |3 A
    size 16M( P7 r! [1 i1 f4 ~! |. J$ {
}
- ], K# L* q! j7 J1 d& ~EOF
) ~9 Y9 d) K7 L) o- n
7 C; Y+ J  F7 ^* t1 [" R8 F

以上的配置说明:

/usr/local/apache-tomcat-8.0.28/logs/catalina.out{ # 要轮转的文件  \& H! Y8 n9 \% t3 U- B' Q
    copytruncate # 创建新的catalina.out副本后,截断源catalina.out文件9 x$ J6 Y  L) _, d4 @1 l# I
    daily     # 每天进行catalina.out文件的轮转- B6 Y8 a0 A* @) R4 A8 E, l4 Q
    rotate 7   # 至多保留7个副本/ g0 K* B! N, x# [. x9 c' h* C' T
    missingok   # 如果要轮转的文件丢失了,继续轮转而不报错
' h5 [  |. K  w0 ~& p  x1 \    compress   # 使用压缩的方式(非常有用,节省硬盘空间;一个2~3GB的日志文件可以压缩成60MB左右)
3 X% P5 h' C* r% m    size 16M   # 当catalina.out文件大于16MB时,就轮转7 b; C+ l1 c  A6 c$ M8 U; l
}7 q! _/ `4 M+ \+ s- ?; H

' Y5 H* R9 i" A

以上是如何工作的呢?

  • 每天晚上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文件的轮转。
    & e" ^( @" L& ?3 n2 H5 B
9 f" q- t" s) c1 q+ }

* j* q0 D. t5 \4 a3 s* _

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

logrotate /etc/logrotate.conf

: p' P4 f' g- \

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

- B. w1 v  F( K- A- V0 Y

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

! U0 g5 T6 F( i( E" E' a& E


( ~# S1 J8 c+ \3 {
0 w6 a" R6 Y6 s3 p& S2 L8 @

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


1 Q( _) n. f8 u2 }; Q3 Y9 }

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

轮转之前:

du -sh *
6 i$ G8 Z& S- ^! ^+ W* }7 a...
- D4 A# r  U$ \2.0G    catalina.out # 未轮转之前的文件大小  {  B' O- T5 H4 g
...& |2 W" {! o# t

8 i  s3 u* A6 l8 _/ }& ]. W. c轮转之后的文件大小:
# du -sh catalina.out*4 J  K; W# Y% R: b4 u
2.0M    catalina.out
/ M! `" @: f- A6 b# f0 X1 D60M catalina.out.1.gz # 轮转之后,进行压缩,日志文件变得更小了
+ s% C2 v; C$ m
" M( }; K/ @: u9 w1 m) j

  V2 p/ K) l7 \  S' i

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

cd /usr/local/apache-tomcat-8.0.28/logs9 p* B& ^! \7 d
find -mtime +7 -exec rm -f {} \;
! q- F% h3 t# h3 \; a; R! b; _7 |" Z: D" K; m
$ U" ]0 {' W) S2 \. c

好了,就到这里了。

" g0 m' U, g& D4 M% Z8 D

% M$ N7 h6 J, R" L  O

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:18 , Processed in 0.020037 second(s), 23 queries .

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

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