解决catalina.out文件过大的问题

前言

有用Tomcat的人,绝对都会遇到这样一个问题:catalina.out文件过大。

它是Tomcat默认生成的日志文件,会随着时间的推移,逐渐增大,不断的增长,甚至达到几G,几十G的大小。由于文件过大,不仅占系统的存储,我们还将无法使用过常规的编辑工具进行查看,严重影响系统的维护工作。

对此,出现了以下几种解决catalina.out文件过大的方案。


简洁型


1.手动版
每次监控到tomcat的硬盘空间变小达到阈值,手动登陆服务器,切换到tomcat的logs下,手动清空

echo " "  > catalina.out

2.脚本版
编写脚本,放入计划任务中,定时清空

crontab -e 
0 24 * * *    sh /root/qin_catalina.out.sh

vim qin_catalina.out.sh
 #!/usr/bin/bash 
 echo " " > catalina.out

技术型


1.日志切割工具版0.1

使用cronolog日志切分工具切分Tomcat的catalina.out日志文件

<1>下载cronolog,并进行安装

wget http://cronolog.org/download/cronolog-1.6.2.tar.gz   (中国服务器可能无法下载或下载缓慢,可先下载到境外服务器上)

tar zxvf cronolog-1.6.2.tar.gz

./cronolog-1.6.2/configure

make

make install

(默认安装在/usr/local/sbin下)

<2>.配置

在tomcat/bin/catalian.sh中

org.apache.catalina.startup.Bootstrap "$@" start \ >> "$CATALINA_BASE"/logs/catalina.out 2&1 &

改成:
org.apache.catalina.startup.Bootstrap"$@" start \ |/usr/local/sbin/cronolog "$CATALINA_BASE"/logs/catalina.%Y-%m-%d.out >> /dev/null 2>&1 &
或
org.apache.catalina.startup.Bootstrap   "$@"  start  2>&1  \   |  /usr/local/sbin/cronolog "$CATALINA_BASE"/logs/catalina.%Y-%m-%d.out >> /dev/null & 

并注释    touch "$CATALINA_OUT"  

<3>重启Tomcat
Tomcat输出日志文件分割成功,输出log文件格式变为:catalina.2017-05-15.out


1.日志切割工具版0.2

CentOS6.5后自带logrotate程序,可以解决catalina.out的日志轮转问题

<1>在/etc/logrotate.d/目录下新建一个tomcat的文件

cat >/etc/logrotate.d/tomcat 

/usr/local/tomcat/logs/catalina.out{            要轮转的文件
    copytruncate                                创建新的catalina.out副本,截断源catalina.out文件
    daily                                       每天进行catalina.out文件的轮转
    rotate 7                                    至多保留7个副本
    missingok                                   文件丢失了,轮转不报错
    compress                                    使用压缩
    size 16M                                    当catalina.out文件大于16MB,就轮转
}

<2>当执行以上操作时是自动执行的,也可手动切割

logrotate /etc/logrotate.conf

如果只轮转tomcat配置文件,要指定文件

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

<3>删除要清理的日志

手工查找需要清理的日志文件

cd /usr/local/tomcat/logs
rm -rf catalina.out.4.gz

2.日志切割脚本版

使用cron每天来定时备份当前的catalina.out,然后清空他的内容;
<1>crontab -e

30 * * * *  sh /root/qie_catalina.out.sh

<2>cat qie_catalina.out.sh 参考脚本

 #!/bin/bash 
 y=`date "+%Y"`
 m=`date "+%m"`
 d=`date "+%d"`

cp /etc/tomcat/logs/catalina.out  /etc/tomcat/logs/`catalina.out.$y_$m_$d`

echo " " > catalina.out

3.修改日志级别版

日志级别:
SEVERE (highest value) > WARNING > INFO > CONFIG > FINE > FINER > FINEST (lowest value)

<1>修改conf/logging.properties日志配置文件,将level级别设置成WARNING减少日志的输出。也可以设置成OFF,直接禁用。

catalina.org.apache.juli.FileHandler.level = WARNING

catalina.org.apache.juli.FileHandler.directory = ${catalina.base}/logs

catalina.org.apache.juli.FileHandler.prefix = catalina.

你可能感兴趣的:(运维日常的FAQ,tomcat)