解决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.

转载于:https://www.cnblogs.com/chinaifae/p/10474912.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
如果您想在脚本中删除`catalina.out`文件,可以将以下代码添加到示例脚本的循环中: ```bash # 删除catalina.out文件 catalina_files=($(find "$TOMCAT_LOG_DIR" -name "catalina.out")) for catalina_file in "${catalina_files[@]}"; do rm "$catalina_file" echo "删除文件: $catalina_file" done ``` 将上述代码添加到示例脚本的循环中,可以删除`catalina.out`文件。更新后的示例脚本如下: ```bash #!/bin/bash # 设置Tomcat日志目录 TOMCAT_LOG_DIR="/path/to/tomcat/logs" # 设置要删除的日志文件类型 LOG_FILE_TYPES=("catalina.out" "localhost_access_log.txt" "host-manager.log" "manager.log") # 设置保留的最近日志文件数量 KEEP_RECENT_FILES=5 # 删除旧的日志文件 for log_type in "${LOG_FILE_TYPES[@]}"; do # 找到该类型的所有日志文件 log_files=($(find "$TOMCAT_LOG_DIR" -name "$log_type")) # 确保保留最近的日志文件数量 if [[ ${#log_files[@]} -gt $KEEP_RECENT_FILES ]]; then # 按修改时间排序 sorted_files=($(ls -t "${log_files[@]}")) # 删除除最新的文件外的所有文件 for ((i = $KEEP_RECENT_FILES; i < ${#sorted_files[@]}; i++)); do rm "${sorted_files[$i]}" echo "删除文件: ${sorted_files[$i]}" done fi done # 删除catalina.out文件 catalina_files=($(find "$TOMCAT_LOG_DIR" -name "catalina.out")) for catalina_file in "${catalina_files[@]}"; do rm "$catalina_file" echo "删除文件: $catalina_file" done echo "清除Tomcat日志完成" ``` 请将`/path/to/tomcat/logs`替换为实际的Tomcat日志目录路径。保存并运行更新后的脚本,它将删除指定类型的旧日志文件,并删除`catalina.out`文件

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值