法一:利用系统logrotate命令来实现tomcat的日志切割
先定义tomcat的pid 文件
修改$TOMCAT_HOME/bin/catalina.sh文件,大约在128行左右,在PRGDIR下面一行添加CATALINA_PID参数行,修改完成后应该跟下面相同。
1
2
3
4
|
# 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”
1
2
|
进入logrotate.d
cd
/etc/logrotate
.d/
|
编写tomcat的轮询日志配置
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
[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
保存退出
给他执行权限
1
|
chmod
u+x
/etc/logrotate
.d
/tomcat_ele
|
测试:执行脚本
1
|
/usr/sbin/logrotate
-vf
/etc/logrotate
.d
/tomcat_ele
|
测试成功然后写入定时任务定时切割
1
2
3
4
|
#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.解压
1
|
tar
xf cronolog-1.6.2.
tar
.gz
|
3.准备
1
2
|
cd
cronolog-1.6.2
.
/configure
|
4.编译
1
|
make
|
5.编译安装
1
|
make
install
|
6.配置tomcat的catalina.sh
删掉或注释 注意注释要放在下边要不让会报错
1
2
|
org.apache.catalina.startup.Bootstrap “$@” start \
>> “$CATALINA_BASE”
/logs/catalina
.out 2>&1 &
|
添加下边一行
1
2
|
org.apache.catalina.startup.Bootstrap
"$@"
start 2>&1 \
|
/usr/local/sbin/cronolog
"$CATALINA_BASE"
/logs/catalina
.%Y-%m-%d.out >>
/dev/null
&
|
注意一共要修改两处 一模一样的修改
这样的话就配置完了 配置完成可以重启tomcat
1
2
|
.
/catalina
.sh stop 或.
/shutdown
.sh
.
/catalina
.sh start 或.
/start
.sh
|
会看到log/下边的catalina.out 变成了以时间命令的日志文件 配置完成
日志改名
如果不习惯catalina日志以时间命令 可以编写一个脚本实现日志改名 crontab执行
1
2
3
4
5
|
[root@iZ25p5pwvouZ logs]
# crontab -e
#auth root
#date 2017-09-12
#定时刷新ele么的项目日志
00 05 * * *
/bin/sh
/server/scripts/ele_logortate
.sh &>
/dev/null
|
定时任务脚本内容
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
[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的文件 零点自动分割