linux 下 使用cronolog对Tomcat 输出catalina.out 日志按照自定义日期格式进行切割 亲测可用
Posted 威威dett
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux 下 使用cronolog对Tomcat 输出catalina.out 日志按照自定义日期格式进行切割 亲测可用相关的知识,希望对你有一定的参考价值。
在Linux系统下,tomcat日志默认输出到catalina.out,随着时间的推移,catalina.out会持续增大,不方便管理和查询。
本文将介绍如何用 cronolog工具进行日志按日期分割,亲测可用
linux环境 centos7.3.1611 (Core)
cronolog版本 cronolog-1.6.2
tomcat版本 Apache Tomcat/8.5.40
1.选择合适的目录下载并解压缩cronolog,依次执行如下命令
[root@call ~]# wget https://files.cnblogs.com/files/crazyzero/cronolog-1.6.2.tar.gz
[root@call ~]# tar xf cronolog-1.6.2.tar.gz
[root@call ~]# cd cronolog-1.6.2
2.安装cronolog,依次执行如下命令
[root@call cronolog-1.6.2]# ./configure
[root@call cronolog-1.6.2]# make
[root@call cronolog-1.6.2]# make install
提醒: 如需自定义安装目录,如:安装到/opt/cronolog
,可做如下命令配置
(默认在/usr/local/sbin/cronolog
)
./configre # –prefix=/opt/cronolog
执行完之后以上3个命令,如果一切正常,则代表安装成功,验证安装是否成功
which cronolog
我使用是默认目录
显示的安装路径/usr/local/sbin/cronolog
3.配置tomcat,打开tomcat目录下bin/catalina.sh文件
1.加井号#注释掉 touch "$CATALINA_OUT"
这一句
2.找到类似下方的代码(有两处):
org.apache.catalina.startup.Bootstrap "$@" start \\
>> "$CATALINA_OUT" 2>&1 "&"
替换成:
org.apache.catalina.startup.Bootstrap "$@" start 2>&1 | /usr/local/sbin/cronolog "$CATALINA_BASE"/logs/catalina.out.%Y-%m-%d.log >> /dev/null &
注意: 使用的安装路径不要错了,我使用的是默认路径/usr/local/sbin/cronolog
,不一样的需要改一下
修改后的样式
....省略上面的代码.....
shift
#touch "$CATALINA_OUT" #这里就是修改的部分
if [ "$1" = "-security" ] ; then
if [ $have_tty -eq 1 ]; then
echo "Using Security Manager"
fi
shift
eval $_NOHUP "\\"$_RUNJAVA\\"" "\\"$LOGGING_CONFIG\\"" $LOGGING_MANAGER $JAVA_OPTS $CATALINA_OPTS \\
-D$ENDORSED_PROP="\\"$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 2>&1 | /usr/local/sbin/cronolog "$CATALINA_BASE"/logs/catalina.out.%Y-%m-%d.log >> /dev/null &
else
eval $_NOHUP "\\"$_RUNJAVA\\"" "\\"$LOGGING_CONFIG\\"" $LOGGING_MANAGER $JAVA_OPTS $CATALINA_OPTS \\
-D$ENDORSED_PROP="\\"$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/local/sbin/cronolog "$CATALINA_BASE"/logs/catalina.out.%Y-%m-%d.log >> /dev/null &
fi
.....省略下面的代码....
4.配置完成后,重启tomcat就可以了,会在logs目录生成一个新命名的文件
------------------------------------------------------分割线----------------------------------------------------
提示: 如果配置完想要立马方便测试一下是否能每天生成一个文件,上面配置的是每天生成一个log文件,这里我们可以设置成每分钟生成一个log文件,方便观察效果,测试完之后在改回来就可以了
只需修改上面配置的2个地方就行
参数修改前
/logs/catalina.out.%Y-%m-%d.log
参数修改后
/logs/catalina.out.%Y-%m-%d-%H-%M.log
改完后最终的样子
org.apache.catalina.startup.Bootstrap "$@" start 2>&1 | /usr/local/sbin/cronolog "$CATALINA_BASE"/logs/catalina.out.%Y-%m-%d-%H-%M.log >> /dev/null &
cronolog 的语法介绍和使用方式参考
参考博文 https://www.cnblogs.com/crazyzero/p/7435691.html
参考博文 https://www.linuxidc.com/Linux/2016-07/133539.htm
另外一种方法,百度过程中看到,就是在catalina.sh文件中,直接修改如下地方的公共值
参考如下博文说是错误的不可用,有兴趣的可以看看 https://blog.csdn.net/weixin_40703574/article/details/95180220
if [ -z "$CATALINA_OUT" ] ; then
CATALINA_OUT="$CATALINA_BASE"/logs/catalina.out
fi
以上是关于linux 下 使用cronolog对Tomcat 输出catalina.out 日志按照自定义日期格式进行切割 亲测可用的主要内容,如果未能解决你的问题,请参考以下文章
Linux下用cronolog切割Tomcat日志并删除指定天数前的日志记录