今天在tomcat上查看项目日志的时候,发现catalina.out文件竟然已经达到202M了,决定做一下日志的分割.先看了一下crontab任务中,发现有个删除前10天日志的自动任务,但是没有发现切割的自动任务.
放狗搜了一下,据说tomcat有默认的日志分割功能,能每天自动生成类似catalina.2010-10-08.log的文件,但是默认catalina.out文件却一直增长.据说到一定大小时占磁盘空间(废话),影响性能,且会报错,这点暂时没发现.其他的查了一下logs文件确实如此.
解决方法,使用cronolog进行日志切割,据说cronolog是个切割日志的小工具,可以切割很多种日志文件,有空得试试.具体做法如下:
1、下载(最新版本)
# wget http://cronolog.org/download/cronolog-1.6.2.tar.gz
2、解压缩
# tar zxvf cronolog-1.6.2.tar.gz
3、进入cronolog安装文件所在目录
# cd cronolog-1.6.2
4、运行安装
# ./configure
# make
# make install
5、查看cronolog安装后所在目录(验证安装是否成功)
# which cronolog
一般情况下显示为:/usr/local/sbin/cronolog
6.进入Tomcat的bin目录,打开catalina.sh文件,找到tomcat启动的相关行,或者你直接查找catalina.out,一般我们修改下面行中的内容(因为我们一般不会在-security条件下运行),
else
“$_RUNJAVA” $JAVA_OPTS $CATALINA_OPTS \
-Djava.endorsed.dirs=”$JAVA_ENDORSED_DIRS” -classpath “$CLASSPATH” \
-Dcatalina.base=”$CATALINA_BASE” \
-Dcatalina.home=”$CATALINA_HOME” \
-Djava.io.tmpdir=”$CATALINA_TMPDIR” \
org.apache.catalina.startup.Bootstrap “$@” start \
>> “$CATALINA_BASE”/logs/catalina.out 2>&1 &
if [ ! -z "$CATALINA_PID" ]; then
echo $! > $CATALINA_PID
fi
fi
修改
org.apache.catalina.startup.Bootstrap “$@” start \
>> “$CATALINA_BASE”/logs/catalina.out 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_BASE”/logs/catalina.out
可以注释掉,完成之后重起Tomcat就可以了,在logs目录下可以看到catalina.2009-02-18.out的日志,是按日生成的。
以上内容均参考网络上的帖子,有一个地方不明白,一个地方需要明天验证.
不明白的:
"org.apache.catalina.startup.Bootstrap “$@” start 2>&1 \
| /usr/local/sbin/cronolog “$CATALINA_BASE”/logs/catalina.%Y-%m-%d.out >> /dev/null &"中为什么要加">> /dev/null"而不是直接">> /usr/local/sbin/cronolog “$CATALINA_BASE”/logs/catalina.%Y-%m-%d.out"直接把输出都重定向到catalina.%Y-%m-%d.out文件.这个得找时间再查查,也希望知道的朋友留言告诉我一下.
需要验证的:
注释掉touch “$CATALINA_BASE”/logs/catalina.out以后,不产生catalina.out,那么当前输出是输出到今天的文件catalina.%Y-%m-%d.out吗?它会每日执行切割并定向到新的日志文件?没看到切割的定时任务,那么这个定时任务是由tomcat本身维护的?cronolog只是提供切割方法?(之前说到tomcat默认也提供切割,貌似都可以不需要cronolog,只要注释touch行就行...找机会试试)
对了,还看到另外一种解决方法,纯shell实现的.
编写一个.sh文件,并放到tomcat下的bin目录,在cron中自动执行,shell脚本如下:
#!/bin/bash
cd `dirname $0`
d=`date +%Y%m%d`
d7=`date -d'7 day ago' +%Y%m%d`
cd ../logs/
cp catalina.out catalina.out.${d}
echo "" > catalina.out
rm -rf catalina.out.${d7}
同样有个问题cd `dirname $0` 没看懂什么意思
原来,
$0获取当前Shell程序的文件名
dirname $0,获取当前Shell程序的路径
cd `dirname $0`,进入当前Shell程序的目录
分享到:
相关推荐
自己写的tomcat日志分割脚本,自动分割日志,自动删除过期日志,也可以用于其他容器日志分割,稍加修改即可
"win系统下的tomcat日志按日期切割工具"指的是在Windows环境下对Tomcat日志进行自动切割的解决方案。通常,Linux系统中有一个名为`logrotate`的工具用于此目的,但在Windows上,我们可以使用类似功能的`cronolog`...
Linux tomcat下catalina.out日志文件分割 前言: tomcat默认使用Java.util.logging记录日志,默认只记录tomcat的日志,不记录应用的日志。tomcat支持采用log4j进行日志记录,配置方法如下: 1.更新最新的tomcat_juli...
tomcat日志分割 先安装 cronolog yum install -y cronolog httpd cronolog安装路径为/usr/sbin/cronolog 然后用我的文件覆盖tomcat/bin下面的catalina.sh文件 重启tomcat便可
这里的`DailyRollingFileAppender`是Log4j中的一个Appender,用于按天自动分割日志文件。`DatePattern`参数定义了日志文件名的日期模式,例如`'.'yyyy-MM-dd`表示每天的日志文件将带有当天的日期作为后缀。 #### 3....
### Windows下Tomcat的日志按天自动分割方法详解 #### 一、背景介绍 在部署Java Web应用时,经常使用Apache Tomcat作为Web服务器。随着应用程序的运行,Tomcat会生成大量的日志文件,其中最重要的是`catalina.out`...
本篇将深入探讨"Tomcat日志分割"这一主题,以及如何配置Tomcat以实现日志自动分割,同时解决防止重复启动的问题。 首先,让我们理解日志分割的概念。日志分割是指将不断增长的日志文件按照特定的时间间隔或大小进行...
"Linux中Tomcat日志切割"是指通过特定的工具或脚本,将Tomcat的日志文件`catalina.out`按照日期进行分割,以实现日志的有序管理和存储。通常,日志切割有助于保持日志文件的大小可控,避免单个文件过大导致的读写...
通过这样的脚本和定时任务,我们可以在Linux上的Tomcat环境中有效地管理和分割`catalina.out`日志,便于日后的检索和分析。这不仅可以节省存储空间,还可以帮助我们更好地跟踪和诊断Tomcat服务的运行状况。
1. 创建配置文件:在`/etc/logrotate.d/`目录下创建一个针对Tomcat日志的配置文件,例如`/etc/logrotate.d/tomcat`。使用`vim`编辑器写入日志文件的路径,例如`/home/odysee/General/tomcat8.5/logs/catalina.out`。...
因此,本文将详细介绍如何解决Tomcat日志文件过大的问题,并通过使用`cronolog`工具实现日志文件按日期自动分割的方法。 #### Tomcat日志文件过大问题解析 1. **问题概述**: - `catalina.out`是Tomcat默认的日志...
这将使日志文件在达到10MB时自动分割。 3. **使用第三方库**:除了Tomcat内置的日志分割功能,还可以使用如Logback或Log4j等强大的日志框架,它们提供了更灵活的日志管理和分割策略。通过配置这些框架,你可以实现...
cronolog是一款广泛使用的日志管理工具,特别是在Linux系统中,它能够按照用户设定的时间间隔自动分割日志文件,便于管理和分析。在Tomcat这样的Java应用服务器中,catalina.out文件是默认的日志输出文件,它记录了...
这里,`cronolog`会根据日期自动分割日志。 4. **重启Tomcat**:完成上述配置后,重启Tomcat使改动生效。在Tomcat的bin目录下执行`./shutdown.sh`停止服务,然后执行`./startup.sh`启动服务。 三、验证日志分割 ...
本手册主要关注如何配置Tomcat以实现日志自动分隔,从而便于管理和分析大量日志数据。 日志分隔主要是为了防止单个日志文件过大导致的存储问题和检索困难。通过定时分割日志,我们可以将每天的日志记录保存在不同的...
标题中的“tomcat日志切分方案”是指在Apache Tomcat服务器中管理日志文件的一种策略,目的是为了更好地管理和分析日志数据。日志切分通常涉及到日志滚动,即根据时间或者其他规则(如文件大小)自动创建新的日志...
本文将详细介绍如何在Linux下将Tomcat日志按日期进行自动分割。 首先,我们需要一个名为`cronolog`的工具来实现日志分割。`cronolog`是一个基于时间的日志轮换工具,它可以按照设定的时间格式将输入的日志流分割到...
- **日志分割**:可以通过配置实现日志文件按大小或日期自动滚动,防止单个日志文件过大。 - **日志过滤**:通过定义过滤规则,可以选择性地记录特定类或方法的日志,避免过多无关信息。 - **日志归档**:可以配置...
本文将详细介绍如何在Linux环境下通过cronolog工具实现Tomcat日志的自动分割。 #### 一、为什么需要分割Tomcat日志? 随着应用程序的运行时间增加,Tomcat的日志文件(通常为`catalina.out`)会不断增大,这不仅会...