使用cronolog工具切分Tomcat的catalina.out日志文件
cronolog一个对日志切分的小工具,其主页在 http://cronolog.org/,我们也可以用它来切分Apache的日志。
# 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
要想分割tomcat的catalina.out,需作如下工作:
修改tomcat bin目录下的catalina.sh文件中的
- 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
看logs文件中是否有catalina.2009-07-01.out样式的日志。
事情终究不过是个大文件处理的问题,强大的bash来搞定;
使用cron每天来备份当前的catalina.out,然后清空他的内容;
参考脚本如下:
#!/bin/sh
y=`date "+%Y"`
m=`date "+%m"`
d=`date "+%d"`
cd /PATH /tomcat/logs
cp catalina.out catalina.out.$y$m$d
echo
> catalina.out
exit
注意linux系统的cron服务是否启动,是否正常工作,还有脚本的存放路径(原因暂保密)
方法3—猥琐流
打开bin目录下的catalina.sh文件,终究不过是个bash文件,
查找一下,catalina.out总共出现三次;
部分截图:
shift
touch "$CATALINA_BASE"/logs/catalina.out
if [ "$1" = "-security" ] ; then
echo "Using Security Manager"
shift
"$_RUNJAVA" $JAVA_OPTS "$LOGGING_CONFIG" $CATALINA_OPTS \
-Djava.endorsed.dirs="$JAVA_ENDORSED_DIRS" -classpath "$CLASSPATH" \
-Djava.security.manager \
-Djava.security.policy=="$CATALINA_BASE"/conf/catalina.policy \
-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
else
"$_RUNJAVA" $JAVA_OPTS "$LOGGING_CONFIG" $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 &
个人觉得也就是这里是写catalina.out文件的;让他写到一个其他的空设备如何?
修改前注意原文件的catalina.sh的备份哟~!!
修改以上代码中的
>> "$CATALINA_BASE"/logs/catalina.out 2>&1 &
为
>> /dev/null 2>&1 &
保存,然后启动tomcat,目前这个 catalina.out一直是空的了。
这个方法是偶自己想到的,个人认为比较勇敢,目前还没有在生产环境测试过。虚拟机测试是通过的。
方法4—人流
这个方法其实就是linux系统管理员手工去删除,人工操作,简称“人流”;
删除之前最好停止tomcat的服务;
首先下载两个文件,如我的tomcat版本是v6.0.24
http://www.apache.org/dist/tomcat/tomcat-6/v6.0.24/bin/extras/tomcat-juli-adapters.jar
http://www.apache.org/dist/tomcat/tomcat-6/v6.0.24/bin/extras/tomcat-juli.jar
按照我写的目录结构来放置。
tomcat6-------lib
| |--------tomcat-juli-adapters.jar
| |--------log4j.jar
| |--------log4j.properites
|
|----bin
|--------tomcat-juli.jar
最后把log4j.properties里的配置写好就可以了。
如:
######################################################################
# 设定logger的root level为DEBUG,指定的输出目的地(appender)为file
log4j.rootLogger=INFO, file , stdout
# 设定stdout控制台
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=[%d{HH:mm:ss}] %5p %c{2} /"%m/"%n
# 设定输出位置,此处设定tomcat目录的logs下,文件名为bugmgrsys.log。
log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.File=${catalina.home}/logs/projectLogs.log
log4j.appender.file.MaxFileSize=1024KB
# 设定制定的file使用的PatternLayout.
# 有关ConversionPattern中的转意字符的含义参考说明
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{HH:mm:ss} %-5p [%C] (%F:%L) - %m%n
######################################################################
2)tomcat5.5 下的log4j日志文件 配置过程
log4j.properties放在%CATALINA_HOME%/conf/common/classes下
# 设定logger的root level为DEBUG,指定的输出目的地(appender)为file
log4j.rootLogger=INFO, file , stdout
# 设定stdout控制台
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=[%d{HH:mm:ss}] %5p %c{2} /"%m/"%n
# 设定输出位置,此处设定tomcat目录的logs下,文件名为bugmgrsys.log。
log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.File=${catalina.home}/logs/bugmgrsys.log
log4j.appender.file.MaxFileSize=1024KB
# 设定制定的file使用的PatternLayout.
# 有关ConversionPattern中的转意字符的含义参考说明
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{HH:mm:ss} %-5p [%C] (%F:%L) - %m%n
log4j.jar放于%CATALINA_HOME%/common/lib下
高级篇:
查了很多人写的资料如果要产生bugmgrsys_2008_05_09.log文件是可能的。不过,注意了是不过,
不过这个文件也只有05月09号过去了这个文件才会产生,而当天的文件是bugmgrsys
为什么会这样呢,不妨碍来看看配置文件吧。我是在上述文件上改的 = =
# 设定logger的root level为DEBUG,指定的输出目的地(appender)为file
log4j.rootLogger=INFO, file , stdout
# 设定stdout控制台
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=[%d{HH:mm:ss}] %5p %c{2} /"%m/"%n
# 设定输出位置,此处设定tomcat目录的logs下,文件名为bugmgrsys.log。
#log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file=org.apache.log4j.DailyRollingFileAppender
log4j.appender.file.DatePattern='_'yyyy-MM-dd'.log'
log4j.appender.file.File=${catalina.home}/logs/bugmgrsys
#log4j.appender.file.MaxFileSize=1024KB
# 设定制定的file使用的PatternLayout.
# 有关ConversionPattern中的转意字符的含义参考说明
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{HH:mm:ss} %-5p [%C] (%F:%L) - %m%n
#log4j.appender.file.layout.ConversionPattern=%d %-5p [%t] %C{2} (%F:%L) - %m%n