Tomcat日志拆分

tomcat catalina.out日志拆分

创建脚本方式:

创建sheel脚本

#!/bin/sh
y=`date "+%Y"`
m=`date "+%m"`
d=`date "+%d"`
cd /opt/apache-tomcat-6.0.39-1/logs
cp catalina.out catalina.out.$y$m$d.log
echo > catalina.out
exit

linux系统创建定时任务触发脚本

创建定时任务命令

1.输入crontab -e 编辑crontab服务文件

例如:

*/2 * * * * /bin/sh /home/admin/jiaoben/buy/deleteFile.sh 
5个*的含义是,第一个*是分,第二个*是小时,第三个*是日,第4个*是月,第5个*是周,第6列是命令

2.查看是否创建成功 crontab -l

3.启动crontab服务

4.一般启动服务用  /sbin/service crond start

根用户的cron服务可以用 sudo service crond start

查看服务是否已经运行 ps -ax|grep cron

参数说明

   crontab -u //设定某个用户的cron服务,一般root用户在执行这个命令的时候需要此参数  
  crontab -l //列出某个用户cron服务的详细内容
  crontab -r //删除没个用户的cron服务
  crontab -e //编辑某个用户的cron服务
  比如说root查看自己的cron设置:crontab -u root -l
  再例如,root想删除fred的cron设置:crontab -u fred -r
  在编辑cron服务时,编辑的内容有一些格式和约定,输入:crontab -u root -e

使用rotatelogs拆分 ##:

修改tomcat,bin目录下catalina.sh文件
将如下内容

 #touch "$CATALINA_OUT"
   if [ "$1" = "-security" ] ; then
 ...
   org.apache.catalina.startup.Bootstrap "$@" start \
   >> "$CATALINA_OUT" 2>&1 "&"  
   else
 eval "\"$_RUNJAVA\"" "\"$LOGGING_CONFIG\"" $LOGGING_MANAGER $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 2>&1 \
   | /usr/sbin/rotatelogs "$CATALINA_BASE"/logs/catalina.%Y-%m-%d.out  200M >> /dev/null &
   fi

修改为

  #touch "$CATALINA_OUT"
  if [ "$1" = "-security" ] ; then
...
  org.apache.catalina.startup.Bootstrap "$@" start \
  >> "$CATALINA_OUT" 2>&1 "&"  
  else
eval "\"$_RUNJAVA\"" "\"$LOGGING_CONFIG\"" $LOGGING_MANAGER $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 2>&1 \
  | /usr/sbin/rotatelogs "$CATALINA_BASE"/logs/catalina.%Y-%m-%d.out  200M >> /dev/null &
  fi

由于正常情况并不需要使用到-security,所以只需要修改一处。

rotatelogs语法分析

rotatelogs [ -l ] logfile [ rotationtime [ offset ]] | [ filesizeM ]

该命令其实只有两种选项用以对日志文件logfile进行操作。且必须选择其中一种方式。

第一种,rotationtime

日志文件以秒为单位的时间间隔滚动

第二种, filesizeM

指定以filesizeM文件大小滚动,而不是按照时间或时差滚动

举例:ErrorLog “|bin/rotatelogs /var/logs/errorlog.%Y-%m-%d-%H_%M_%S 5M”

此配置会在错误日志大小增长到5兆字节时滚动该日志,日志文件名后缀会按照如下格式创建:errorlog.YYYY-mm-dd-HH_MM_SS 。

选项 -l  和offset都是和时区相关的。

文件名格式:

errorlog.%Y-%m-%d-%H_%M_%S-------------------errorlog.YYYY-mm-dd-HH_MM_SS
%A 星期名全称(本地的)
%a 3个字符的星期名(本地的)
%B 月份名的全称(本地的)
%b 3个字符的月份名(本地的)
%c 日期和时间(本地的)
%d 2位数的一个月中的日期数
%H 2位数的小时数(24小时制)
%I 2位数的小时数(12小时制)
%j 3位数的一年中的日期数
%M 2位数的分钟数
%m 2位数的月份数
%p am/pm12小时制的上下午(本地的)
%S 2位数的秒数
%U 2位数的一年中的星期数(星期天为一周的第一天)
%W 2位数的一年中的星期数(星期一为一周的第一天)
%w 1位数的星期几(星期天为一周的第一天)
%X 时间(本地的)
%x 日期(本地的)
%Y 4位数的年份
%y 2位数的年份
%Z 时区名
%% 符号"%"本身