一、背景
Tomcat 的 catalina.out 日志量不断增加,占用空间较大,且默认是不滚动的。
因此,需要对其进行日志分割,并进行清理。
之前一个图书商城项目,日志3-4个月竟然高达10G。
亲测,成功!!
本文选用 Cronolog 对其进行分割。
二、安装
1、下载
地址:http://cronolog.org/download/cronolog-1.6.2.tar.gz
2、安装
tar zxvf cronolog-1.6.2.tar.gz
cd cronolog-1.6.2
./configure
make
make install
# 如果上面地址无法下载了,那就用 yum安装把,更简单
yum install cronolog
3、测试
查看 cronolog 安装后所在目录,验证安装是否成功:
which cronolog
# 一般情况下显示为:/usr/local/sbin/cronolog 或者 /usr/sbin/cronolog
三、配置
1、修改文件
找到 catalina.sh
2、修改内容
- 第一步
if [ -z "$CATALINA_OUT" ] ; then
CATALINA_OUT="$CATALINA_BASE"/logs/catalina.out
改为
if [ -z "$CATALINA_OUT" ] ; then
##这里配置生产环境的日志catalina.out太大的问题; 我们关闭把日志;这里日志动不动4-5G,上10G的。这里按照天进行分割
CATALINA_OUT="$CATALINA_BASE"/logs/catalina.%Y-%m-%d.out.log
- 第二步
touch "$CATALINA_OUT"
改为
#touch "$CATALINA_OUT"
- 第三步
org.apache.catalina.startup.Bootstrap "$@" start \
>> "$CATALINA_OUT" 2>&1 "&"
改为
org.apache.catalina.startup.Bootstrap "$@" start 2>&1 \
|/usr/sbin/cronolog "$CATALINA_OUT" >> /dev/null &
注意,这里替换掉,不要保留的注释也会影响运行。因为在 eval
命令包裹这。
- 第四步
org.apache.catalina.startup.Bootstrap "$@" start \
>> "$CATALINA_OUT" 2>&1 "&"
改为
org.apache.catalina.startup.Bootstrap "$@" start 2>&1 \
|/usr/sbin/cronolog "$CATALINA_OUT" >> /dev/null &
四、重启
重启后,查看日志是否分割成功。
亲测成功,截图如下。
文章转载自:Tomcat的catalina.out日志分割
五、centos系统自动切割工具
5.1 使用logrotate切图Nginx日志
Linux日志切割logrotate服务配置
参见同类文章 == 第三种最简单(/etc/logrotate.d):关于tomcat切割catalina.out日志的三种方式
# logrotate 本质基于 crontab,这里手工触发一次
logrotate -d -f /etc/logrotate.d/tomcatrotate
5.2 使用logrotate切图Nginx日志
其实使用yum intall -y nginx, 默认就有 cat /etc/logrotate.d/nginx 分割日志;
第一种方式:cat /etc/logrotate.d/nginx,pid换成自己安装的路径;
/var/log/nginx/*log {
create 0664 nginx root
daily
rotate 10
missingok
notifempty
compress
sharedscripts
postrotate
/bin/kill -USR1 `cat /run/nginx.pid 2>/dev/null` 2>/dev/null || true
endscript
}
第二种方式:自己写一个脚本,自己写定时器,参见: 脚本 linux bash 使用 shell PowerShell、alibaba clound toolkit、 OpenSSH 、常见shell脚本