法一:利用系统logrotate命令来实现tomcat的日志切割
先定义tomcat的pid 文件
修改$TOMCAT_HOME/bin/catalina.sh文件,大约在128行左右,在PRGDIR下面一行添加CATALINA_PID参数行,修改完成后应该跟下面相同。
# Get standard environment variables PRGDIR=`dirname "$PRG"` CATALINA_PID=/var/run/tomcat.pid #CATALINA_PID=$PRGDIR/CATALINA_PID
也可以自定义pid路径,例如“CATALINA_PID=/var/run/tomcat.pid”
进入logrotate.d cd /etc/logrotate.d/
编写tomcat的轮询日志配置
[root@iZ25p5pwvouZ logrotate.d]# vim tomcat_ele /mnt/tomcat8_ele/logs/catalina.out { daily rotate 15 missingok notifempty dateext compress delaycompress create 600 root root sharedscripts postrotate if [ -f /var/run/tomcat_ele.pid ]; then kill -USR1 `cat /var/run/tomcat_ele.pid` fi endscript }
详细参数请参见:http://dellinger.blog.51cto.com/12445009/1964564
保存退出
给他执行权限
chmod u+x /etc/logrotate.d/tomcat_ele
测试:执行脚本
/usr/sbin/logrotate -vf /etc/logrotate.d/tomcat_ele
测试成功然后写入定时任务定时切割
#auth root #date 2017-09-12 #定时刷新ele么的项目日志 00 00 * * * /usr/sbin/logrotate -vf /etc/logrotate.d/tomcat_ele &>/dev/null
配置完成OK
法二“利用cronlog工具来实现日志切割
1.软件包准备
从51cto中下载一个包cronolog-1.6.2.tar.gz
http://down.51cto.com/data/336272
2.解压
tar xf cronolog-1.6.2.tar.gz
3.准备
cd cronolog-1.6.2 ./configure
4.编译
make
5.编译安装
make install
6.配置tomcat的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 &
注意一共要修改两处 一模一样的修改
这样的话就配置完了 配置完成可以重启tomcat
./catalina.sh stop 或./shutdown.sh ./catalina.sh start 或./start.sh
会看到log/下边的catalina.out 变成了以时间命令的日志文件 配置完成
日志改名
如果不习惯catalina日志以时间命令 可以编写一个脚本实现日志改名 crontab执行
[root@iZ25p5pwvouZ logs]# crontab -e #auth root #date 2017-09-12 #定时刷新ele么的项目日志 00 05 * * * /bin/sh /server/scripts/ele_logortate.sh &>/dev/null
定时任务脚本内容
[root@iZ25p5pwvouZ logs]# cat /server/scripts/ele_logortate.sh #!/bin/sh Path="/mnt/tomcat8_ele/logs/" Yesterday=`date +%F -d "-1 day"` TodayFile=`echo ${Path}catalina.$(date +%F).out` if [ -f $TodayFile ] then /bin/mv ${Path}catalina.out ${Path}catalina.$Yesterday.out &>/dev/null if [ $? -ne 0 ];then echo "`date +%F` 改名失败" >>/tmp/ele_logortate.log fi sleep 5 /bin/mv $TodayFile ${Path}catalina.out &>/dev/null if [ $? -ne 0 ];then echo "`date +%F` 改名失败" >>/tmp/ele_logortate.log fi else echo "没有 今天的日志 配置失败" >>/tmp/ele_logortate.log fi
OK完成。
解压缩
# tar zxvf cronolog-1.6.2.tar.gz
进入cronolog安装文件所在目录
# cd cronolog-1.6.2
运行安装
# ./configure # make # make install
成功后 运行which cronolog会找到对应的路径 /usr/local/sbin/cronolog
在tomcat的bin目录的catalina.sh
中找到2行:
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
把其注释掉即可
这样每天就会产生一个catalina.2xxx-0x-xx.out的文件 零点自动分割