Tomcat解决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 500M                                    当catalina.out文件大于16MB,就轮转
}

其他参数:

compress                                   通过gzip 压缩转储以后的日志
nocompress                                 不做gzip压缩处理
copytruncate                               用于还在打开中的日志文件,把当前日志备份并截断;是先拷贝再清空的方式,拷贝和清空之间有一个时间差,可能会丢失部分日志数据。
nocopytruncate                             备份日志文件不过不截断
create mode owner group                    轮转时指定创建新文件的属性,如create 0777 nobody nobody
nocreate                                   不建立新的日志文件
delaycompress                              和compress 一起使用时,转储的日志文件到下一次转储时才压缩
nodelaycompress                            覆盖 delaycompress 选项,转储同时压缩。
missingok                                  如果日志丢失,不报错继续滚动下一个日志
errors address                             专储时的错误信息发送到指定的Email 地址
ifempty                                    即使日志文件为空文件也做轮转,这个是logrotate的缺省选项。
notifempty                                 当日志文件为空时,不进行轮转
mail address                               把转储的日志文件发送到指定的E-mail 地址
nomail                                     转储时不发送日志文件
olddir directory                           转储后的日志文件放入指定的目录,必须和当前日志文件在同一个文件系统
noolddir                                   转储后的日志文件和当前日志文件放在同一个目录下
sharedscripts                              运行postrotate脚本,作用是在所有日志都轮转后统一执行一次脚本。如果没有配置这个,那么每个日志轮转后都会执行一次脚本
prerotate                                  在logrotate转储之前需要执行的指令,例如修改文件的属性等动作;必须独立成行
postrotate                                 在logrotate转储之后需要执行的指令,例如重新启动 (kill -HUP) 某个服务!必须独立成
daily                                      指定转储周期为每天
weekly                                     指定转储周期为每周
monthly                                    指定转储周期为每月
rotate count                               指定日志文件删除之前转储的次数,0 指没有备份,5 指保留5 个备份
dateext                                    使用当期日期作为命名格式
dateformat .%s                             配合dateext使用,紧跟在下一行出现,定义文件切割后的文件名,必须配合dateext使用,只支持 %Y %m %d %s 这四个参数
size(或minsize) log-size                   当日志文件到达指定的大小时才转储,log-size能指定bytes(缺省)及KB (sizek)或

<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

01 0 * * *  sh /root/qie_catalina.out.sh

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

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

cp /etc/tomcat/logs/catalina.out  /etc/tomcat/logs/`catalina.out.$DATE`
wait

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.

到此这篇关于Tomcat解决catalina.out文件过大的问题的文章就介绍到这了,更多相关Tomcat catalina.out文件过大内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • 基于tomcat配置文件server.xml详解

    1. 入门示例:虚拟主机提供web服务 该示例通过设置虚拟主机来提供web服务,因为是入门示例,所以设置极其简单,只需修改$CATALINA_HOME/conf/server.xml文件为如下内容即可.其中大部分都采用了默认设置,只是在engine容器中添加了两个Host容器. <?xml version="1.0" encoding="UTF-8"?> <Server port="8005" shutdown="SH

  • Tomcat日志文件定时清理备份的脚本

    以下脚本主要备份的日志文件为tomcat的catalina.out.localhost_access_log.yyyy-mm-dd.log日志和项目的日志文件,其中项目的日志文件格式为"projectname-yyyy-mm-dd.log",以下为备份脚本,具体的操作都有相应的注释,供大家参考,具体情况请根据日志文件的格式和要求来使用本脚本. #!/bin/sh ###### # 日志定时运行时间为每天0点1分 # 删除20天之前的日志文件,压缩一周之前的日志文件 # 日志文件时间是根

  • Tomcat无法加载css和js等静态资源文件的解决思路

    解决思路有两个 一是,你使用了Apache服务器,html不交给Tomcat处理,所以你找不到Html等静态资源,所以你先停掉阿帕奇,然后只用Tomcat猫试试. 二是,像我一样,使用了Jetty开发程序,但是打war包的时候忘记干掉web.xml中的jetty修改静态资源的代码.如下,干掉即可. 复制代码 代码如下: <servlet> <servlet-name>default</servlet-name> <!-- <servlet-class>

  • 详述 tomcat 中的 server.xml 配置文件示例

    正文 1 前言 Tomcat 隶属于 Apache 基金会,是开源的轻量级 Web 应用服务器,使用非常广泛.server.xml是 Tomcat 中最重要的配置文件,server.xml的每一个元素都对应了 Tomcat 中的一个组件:通过对 XML 文件中元素的配置,可以实现对 Tomcat 中各个组件的控制.因此,学习server.xml文件的配置,对于了解和使用 Tomcat 至关重要. 本文将通过实例,介绍server.xml中各个组件的配置,并详细说明 Tomcat 各个核心组件的作

  • tomcat应用文件备份脚本及日志备份脚本的示例代码

    下面先给大家介绍tomcat应用文件备份脚本 #!/bin/bash #Back up the entire tomcat8080-dist to the /backup directory backuppath=/mnt/tomcat8080-dist/webapps/ backpath=/backup/backup-tomcat8080-dist/ action=/backup/backup-tomcat8080-dist/ APPNAME=dist BACKUPNAME1=dist BAC

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

    目录 前言 暴力型 技术型 前言 有用Tomcat的,绝对都会遇到这样一个问题:catalina.out文件过大. 它是Tomcat默认生成的日志文件,会随着时间的推移,逐渐增大,不断的增长,甚至达到几G,几十G的大小.由于文件过大,不仅占系统的存储,我们还将无法使用过常规的编辑工具进行查看,严重影响系统的维护工作. 对此,出现了以下几种解决catalina.out文件过大的方案. 暴力型 除非不需要日志,否则不建议使用 1.手动版 每次监控到tomcat的硬盘空间变小达到阈值,手动登陆服务器,

  • 解决docker数据文件过大导致根磁盘满的问题

    背景: 最近在线上使用的docker主机发现根目录容量快满了,一番查找,发现是docker的data文件过大了.     我们知道docker数据默认是存放在/var/lib/docker下的,我们可以在启动时用-g --graph=""参数,把数据目录更改到其他容量大的地方去.但是对于在使用中的docker来说,直接修改这个目录路径,会导致镜像和容器都丢失了,所以修改参数这个方法适用于初始化docker的时候使用. 对于又想解决根分区容量满,又不想更改数据存储路径的我来说,我不想更改

  • 解决Tomcat 中catalina.out持续累加问题

    此方法不需要修改Tomcat配置 亲测,可用 1.在tomcat  bin目录下添加文件clear_log.sh 内容如下: #!/bin/sh d=`date +%Y-%m-%d` d7=`date -d'7 day ago' +%Y-%m-%d` cp /opt/apache-tomcat-8.5.9/logs/catalina.out /opt/apache-tomcat-8.5.9/logs/catalina.${d}.log echo "" > /opt/apache-

  • 浅析Tomcat各种日志的关系与catalina.out文件的分割问题

    Tomcat 各日志之间的关系 一图胜千言! 其他日志如 localhost.{yyyy-MM-dd}.log.localhost-access.{yyyy-MM-dd}.log 的 localhost 是context的名称,往往一个应用程序是一个名称. 分割 catalina.out 按上图所示,随着运行时间变久 catalina.out 只会越来越大,但控制台输出的日志也有用,比如某些开发人员喜欢使用e.printStackTrace().System.out.println().Syst

  • 解决Mysql收缩事务日志和日志文件过大无法收缩问题

    一.MS SQL SERVER 2005 --1.清空日志       exec('DUMP TRANSACTION 数据库名 WITH NO_LOG') --2.截断事务日志:      exec('BACKUP LOG 数据库名 WITH NO_LOG') --3.收缩数据库文件(如果不压缩,数据库的文件不会减小      exec('DBCC SHRINKDATABASE(数据库名) ') --4.设置自动收缩      exec('EXEC sp_dboption 数据库名,autosh

  • Linux tomcat下catalina.out日志文件分割

    Linux tomcat下catalina.out日志文件分割 前言: tomcat默认使用Java.util.logging记录日志,默认只记录tomcat的日志,不记录应用的日志.tomcat支持采用log4j进行日志记录,配置方法如下: 1.更新最新的tomcat_juli.jar包到./bin/目录下: 2.拷贝log4j.jar,lo4j.properties到./lib目录下; 3.删除./conf/logging.properties 4.重启 log4j配置样本 实例代码: lo

  • 浅谈webpack打包之后的文件过大的解决方法

    以前一直使用 create-react-app 这个脚手架进行 react 开发,后面因为一些自定义的配置,转而使用 webpack 搭建一套自己的脚手架.但是在使用 webpack 打包之后发现,纳尼?怎么文件这么大??? 于是研究了一下如何处理 webpack 打包之后文件太大的情况,简单记录下来. 首先配置全局变量 首先,通过指定环境,告诉 webpack 我们当前处于 production 环境中,要按照 production 的方式去打包. //指定环境,将process.env.NO

  • 解决vue-cli脚手架打包后vendor文件过大的问题

    大家会遇到打包后文件很大,导致页面初始化加载的速度很慢.会出现白屏的现象.这一般是你打包的vendor太大的缘故.如果你打包后看到你的vendor文件有700kb以上.你就要考虑怎么处理. 处理这种文件的 1.把不常改变的库放到index.html中,通过cdn引入,比如下面这样: <script src="https://unpkg.com/vue@2.5.2/dist/vue.js"></script> <script src="https:

  • 基于vue-cli npm run build之后vendor.js文件过大的解决方法

    问题 vue-cli npm run build命令默认把dependencies中的依赖统一打包,导致vendor.js文件过大,出现首屏加载过于缓慢的问题. 解决方案 像vue.axios.element-ui这些基本上不会改变的依赖我们可以把它们用cdn导入,没有必要打包到vendor.js中. 1.在项目根目录index.html使用cdn节点导入 <div id="app"></div> <!-- 先引入 Vue --> <!--开发

  • 解决pyinstaller 打包exe文件太大,用pipenv 缩小exe的问题

    解决pyinstaller 打包exe文件太大,用pipenv 缩小exe的问题 最近写一个小脚本,源代码200多行,引入了 openpyxl.requests库,写完打包exe之后居然有64MB的大小,真是奇了葩了.网上查找各位大神的做法,自己又动手填了N个坑之后,总算找到缩小exe文件的方法了,这种方法必须使用到pipenv,详细记录如下: 1.安装pipenv 就像安装其他python库一样,在cmd环境下安装: pip install pipenv 2.安装完成后,随便找一个盘符,在这个

随机推荐