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

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

[复制链接]

1

主题

0

回帖

12

积分

管理员

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

随着项目的运行,Tomcat的日志文件catalina.out的大小日益增大,现在都有好几个GB了。如果我们不做任何处理,catalina.out的文件大小将会持续增加,直到把我们的系统硬盘空间给撑爆不可。3 z5 A! q# s% Z, ~% K/ H7 D

# C2 B3 f8 s5 [7 M# L* `) Y

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

" J$ o; N$ e; `# E4 U0 @) Q

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

cat >/etc/logrotate.d/tomcat <<EOF
- g+ {, J2 R' ~2 D3 |+ M/usr/local/apache-tomcat-8.0.28/logs/catalina.out{
5 s! l7 L0 I7 o+ C. V    copytruncate, f, a& U4 \; N0 h* S- ]
    daily3 n+ i/ E1 u: ^. g0 Q
    rotate 78 i! ?  }# {' o, V" e6 g
    missingok, M+ ]! [" }9 s
    compress1 E& `  g/ E' J& k5 w; ?# [2 U
    size 16M
( }9 ?2 a  |! z$ [( J( n) @4 W}. P6 Z" o" T# m2 @, e
EOF
/ e7 X9 ~! w  A# v7 X$ f
* k! z& p3 d6 C

以上的配置说明:

/usr/local/apache-tomcat-8.0.28/logs/catalina.out{ # 要轮转的文件, p, l2 u; E6 ^& ^! O, g: f
    copytruncate # 创建新的catalina.out副本后,截断源catalina.out文件$ J# ~) _( _- N
    daily     # 每天进行catalina.out文件的轮转! N$ j( m( H2 ^$ r# l; E) l5 X" B
    rotate 7   # 至多保留7个副本" G' t/ ]1 ]/ ?6 s
    missingok   # 如果要轮转的文件丢失了,继续轮转而不报错
9 L$ ^/ s( a: E    compress   # 使用压缩的方式(非常有用,节省硬盘空间;一个2~3GB的日志文件可以压缩成60MB左右)1 `5 s: ?3 L- a* n4 O
    size 16M   # 当catalina.out文件大于16MB时,就轮转9 ^: N0 z6 c# D& F
}# ?' K6 S" o6 a( c8 ^3 |


' |. o& k" @7 L; i$ Y8 M- 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文件的轮转。
    ) j) v3 p$ V3 t: n

4 r# d( x% r% b" H- E

* m3 m* V# S  c4 c- V1 V

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

logrotate /etc/logrotate.conf

" T) J+ ^9 b7 s; P

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


! ?1 O' o( A* X( S# I9 ~4 d: H# R

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


: D& F+ Z- x0 p+ E' ^

/ \  K) L/ x  {2 O% a

5 u+ p" K6 y, h4 T. G! h

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

7 s) t! X3 k" C  l  P  j4 w3 z& v

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

轮转之前:

du -sh *) I4 ^! [8 n+ c+ L" n
...' u- h1 B' x& a; e% ]9 `0 N
2.0G    catalina.out # 未轮转之前的文件大小2 P  ^8 d+ m8 J. C" P/ L9 y- l2 j9 s2 y
...
4 a* b8 x* ~) t. [. K
) ^% U: @/ j3 o5 _0 b轮转之后的文件大小:
# du -sh catalina.out*7 @1 j' E: a1 Z0 z2 @" k0 i& C3 v6 o
2.0M    catalina.out, @3 N) o% x- c* B4 J7 O8 F! Q
60M catalina.out.1.gz # 轮转之后,进行压缩,日志文件变得更小了: j! {! U- C3 q0 E9 H) G3 K% t2 p- Z8 a

1 r5 ~) _: O, N

# B* v0 I3 B8 I3 `; ]- C

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

cd /usr/local/apache-tomcat-8.0.28/logs, P8 m! W3 D! t
find -mtime +7 -exec rm -f {} \;) v1 C' S" H8 A5 c( X$ y. {

8 v* M4 ~: [% u! Z0 Q

: {& Z; L9 F  a' W! E

好了,就到这里了。


4 w8 I" G$ Z- K
# a. i+ q7 q; |$ H

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

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

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