Tomcat日志文件切割

  • 内容
  • 评论
  • 相关

Tomcat的日志文件catalina.out会随着时间日益增大,当我们要查询日志就很不方便,所以需要定期轮转catalina.out文件。

配置logrotate

我们只用CentOS自带的logrotate程序来解决这个问题。

我们使用grep -v “^$”| grep -v “#”把配置文件里没用的#这些都去掉,只看有用的部分

[root@10.0.3.15 logs]# cat /etc/logrotate.conf | grep -v “^$”| grep -v “#”


我们重新编辑下这个文件,打compress选项(去掉注释)


添加指定文件,在/etc/logrotate.d/目录下新建一个名为tomcat的文件

[root@10.0.3.15 logs]# touch /etc/logrotate.d/tomcat

编辑下文件

[root@10.0.3.15 logs]# vim /etc/logrotate.d/tomcat

黏贴

/data0/app/apache-tomcat-7.0.29_2/logs/catalina.out{

daily

rotate 7

missingok

dateext

compress

size 16M

copytruncate

}

配置文件说明

/data0/app/apache-tomcat-7.0.29_2/logs/catalina.out{ # 要轮转的文件

daily # 每天进行catalina.out文件的轮转

rotate 7 # 至多保留7个副本

missingok # 如果要轮转的文件丢失了,继续轮转而不报错

dateext 文件后缀是日期格式,也就是切割后文件是:xxx.log-20150828.gz

compress # 使用压缩的方式(非常有用,节省硬盘空间;一个2~3GB的日志文件可以压缩成60MB左右)

size 16M # 当catalina.out文件大于16MB时,就轮转

copytruncate # 创建新的catalina.out副本后,截断源catalina.out文件

}

立即截断日志

[root@10.0.3.15 logs]# logrotate –force /etc/logrotate.d/tomcat

其他说明

定时任务说明

  • 每天晚上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文件会触发/data0/app/apache-tomcat-7.0.29_2/logs/catalina.out文件的轮转。

[root@10.0.3.15 logs]# cd /etc/cron.daily/

logrotate配置文件参数说明

compress 通过gzip 压缩转储以后的日志

nocompress 不需要压缩时,用这个参数 

copytruncate 用于还在打开中的日志文件,把当前日志备份并截断 

nocopytruncate 备份日志文件但是不截断 

create mode owner group 转储文件,使用指定的文件模式创建新的日志文件 

nocreate 不建立新的日志文件

delaycompress 和 compress 一起使用时,转储的日志文件到下一次转储时才压缩 

nodelaycompress 覆盖 delaycompress 选项,转储同时压缩。 

errors address 专储时的错误信息发送到指定的Email 地址 

ifempty 即使是空文件也转储,这个是 logrotate 的缺省选项。

notifempty 如果是空文件的话,不转储 

mail address 把转储的日志文件发送到指定的E-mail 地址

nomail 转储时不发送日志文件

olddir directory 转储后的日志文件放入指定的目录,必须和当前日志文件在同一个文件系统 

noolddir 转储后的日志文件和当前日志文件放在同一个目录下 

prerotate/endscript 在转储以前需要执行的命令可以放入这个对,这两个关键字必须单独成行 

postrotate/endscript 在转储以后需要执行的命令可以放入这个对,这两个关键字必须单独成行 

daily 指定转储周期为每天

weekly 指定转储周期为每周 

monthly 指定转储周期为每月 

rotate count 指定日志文件删除之前转储的次数,0 指没有备份,5 指保留5 个备份 

tabootext [+] list 让logrotate 不转储指定扩展名的文件,缺省的扩展名是:.rpm-orig, .rpmsave, v, 和 ~ 

size size 当日志文件到达指定的大小时才转储,Size 可以指定 bytes (缺省)以及KB (sizek)或者MB (sizem).