Linux下定时切割Tomcat日志并删除指定天数前的日志记录

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介:

System.out和System.err都被打印到catalina.out。catalina.out不会rotate。一般在部署Tomcat后,运行久了,catalina.out文件会越来越大,对系统的稳定造成了一定的影响。

1、可通过修改conf/logging.properties日志配置文件来屏蔽掉这部分的日志信息。

1
2
3
4
5
6
7
[root@localhost conf] # pwd
/usr/local/tomcat/conf
[root@localhost conf] # cp logging.properties logging.propertiesbak
[root@localhost conf] # vim logging.properties
  25 1catalina.org.apache.juli.FileHandler.level = FINE
  26 1catalina.org.apache.juli.FileHandler.directory = ${catalina.base} /logs
  27 1catalina.org.apache.juli.FileHandler.prefix = catalina.

将level级别设置成WARNING就可以大量减少日志的输出,当然也可以设置成OFF,直接禁用掉。

一般日志的级别有:
SEVERE (highest value) > WARNING > INFO > CONFIG > FINE > FINER > FINEST (lowest value)

2、使用cronolog工具切分Tomcat的catalina.out日志文件

下载、安装cronolog

1
2
3
4
5
6
7
8
[root@localhost src] # rpm -qa |grep cronolog
[root@localhost src] # tar zxvf cronolog-1.6.2.tar.gz 
[root@localhost src] # cd cronolog-1.6.2
[root@localhost cronolog-1.6.2] # ./configure 
[root@localhost cronolog-1.6.2] # make && make install
[root@localhost cronolog-1.6.2] # which cronolog
/usr/local/sbin/cronolog
[root@localhost cronolog-1.6.2] #

用which cronolog可以查到安装的路径,这个路径待会在修改catalina.sh时会用到。

修改catalina.sh  将183行修改成184行内容,注释掉355行,368、369行替换成370、371行,379、380行替换成381、382行;

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
[root@localhost cronolog-1.6.2] # cp /usr/local/tomcat/bin/catalina.sh /usr/local/tomcat/bin/catalina.shbak
[root@localhost cronolog-1.6.2] # vim /usr/local/tomcat/bin/catalina.sh
182  if  [ -z  "$CATALINA_OUT"  ] ;  then
183  #  CATALINA_OUT="$CATALINA_BASE"/logs/catalina.out
184   CATALINA_OUT= "$CATALINA_BASE" /logs/catalina .%Y-%m-%d.out
185  fi
......
355  #  touch "$CATALINA_OUT"
......
363       -Djava.security.manager \
364       -Djava.security.policy== "$CATALINA_BASE" /conf/catalina .policy \
365       -Dcatalina.base= "$CATALINA_BASE"  \
366       -Dcatalina.home= "$CATALINA_HOME"  \
367       -Djava.io.tmpdir= "$CATALINA_TMPDIR"  \
368  #     org.apache.catalina.startup.Bootstrap "$@" start \
369  #      >> "$CATALINA_OUT" 2>&1 &
370      org.apache.catalina.startup.Bootstrap  "$@"  start 2>&1 \ 
371      |  /usr/local/sbin/cronolog  "$CATALINA_OUT"  >>  /dev/null  &
372 
373    else
374      "$_RUNJAVA"  "$LOGGING_CONFIG"  $LOGGING_MANAGER $JAVA_OPTS $CATALINA_OPTS \
375       -Djava.endorsed. dirs = "$JAVA_ENDORSED_DIRS"  -classpath  "$CLASSPATH"  \
376       -Dcatalina.base= "$CATALINA_BASE"  \
377       -Dcatalina.home= "$CATALINA_HOME"  \
378       -Djava.io.tmpdir= "$CATALINA_TMPDIR"  \
379  #     org.apache.catalina.startup.Bootstrap "$@" start \
380  #     >> "$CATALINA_OUT" 2>&1 &
381       org.apache.catalina.startup.Bootstrap  "$@"  start 2>&1 \ 
382       |  /usr/local/sbin/cronolog  "$CATALINA_OUT"  >>  /dev/null  &
383 
384    fi
[root@localhost bin] # ./catalina.sh start
Using CATALINA_BASE:    /app/apache-tomcat-7 .0.61
Using CATALINA_HOME:    /app/apache-tomcat-7 .0.61
Using CATALINA_TMPDIR:  /app/apache-tomcat-7 .0.61 /temp
Using JRE_HOME:         /app/jdk1 .7.0_79
Using CLASSPATH:        /app/apache-tomcat-7 .0.61 /bin/bootstrap .jar: /app/apache-tomcat-7 .0.61 /bin/tomcat-juli .jar
Tomcat started.
[root@localhost bin] # service tomcat stop
[root@localhost bin] # service tomcat start

可以通过./catalina.sh start 来查看配置文件是否正确;这样在/usr/local/tomcat/logs每天会自动生成catalina.%Y-%m-%d.out文件,如果有报错去掉前面的空格试试,下面我们要做的是定期清理这些过期的文件,我们可以通过crontab来实现

1
2
3
4
5
6
7
8
[root@localhost logs] # crontab -e
no  crontab  for  root - using an empty one
crontab : installing new  crontab
[root@localhost logs] # crontab -l
30 5 * * 6  /bin/find  /usr/local/tomcat/logs/  -mtime +7 - type  f -name  "catalina.*.out"  - exec  /bin/rm  -f {} \;
[root@localhost logs] # cat /var/spool/cron/root 
30 5 * * 6  /bin/find  /usr/local/tomcat/logs/  -mtime +7 - type  f -name  "catalina.*.out"  - exec  /bin/rm  -f {} \;
[root@localhost logs] #

日期格式串:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
%a             本地简短星期名(e.g.: Sun..Sat)   
%A            本地完整星期名(e.g.: Sunday .. Saturday)   
%b            本地简短月名(e.g.: Jan .. Dec)   
%B            本地完整月名(e.g.: January .. December)   
%c             本地日期与时间(e.g.: “Sun Dec 15 14:12:47 GMT 1996″)   
%d            一月中的第几日(01 .. 31)   
%j             一年中的第几天 (001 .. 366)   
%m           月名的数字表示 (01 .. 12)   
%U            一年中以星期日为每周第一天计算的星期数(00..53, 第一周包括新年的第一个星期日)   
%W           一年中以星期一为每周第一天计算的星期数(00..53, 第一周包括新年的第一个星期一)   
%w            星期名的数字表示 (0 .. 6, 0为星期日)   
%x             本地日期 (e.g. 今天在北京是: “15 /12/96 ″)   
%y             不带世纪的年(00 .. 99)   
%Y             带世纪的年(1970 .. 2038)

时间格式串:

1
2
3
4
5
6
7
%H               24小时制小时(00..23)   
%I                12小时制小时(01..12)   
%p               本地AM /PM 指示符   
%M             分钟(00..59)   
%S               秒(00..61)   
%X              本地时间(e.g.: “15:12:47″)   
%Z              时区 (e.g. GMT),如果不能检测出时区,值为空

特殊格式串:

1
2
3
%%               %字符   
%n                新行   
%t                 tab字符



本文转自 justin_peng 51CTO博客,原文链接:http://blog.51cto.com/ityunwei2017/1627604,如需转载请自行联系原作者
相关实践学习
通过日志服务实现云资源OSS的安全审计
本实验介绍如何通过日志服务实现云资源OSS的安全审计。
相关文章
|
2月前
|
监控 Linux 应用服务中间件
linux查看日志文件tail -f用法
在 Linux 中,查看和监控日志文件是系统管理员和开发者常用的操作之一。tail 命令就是用来查看文件内容的,它默认显示文件的最后部分。tail -f 是 tail 命令的一个非常有用的选项,用于实时查看和跟踪日志文件的更新,尤其是在监控运行中的服务时非常有用。
401 0
|
4月前
|
开发框架 Java 关系型数据库
在Linux系统中安装JDK、Tomcat、MySQL以及部署J2EE后端接口
校验时,浏览器输入:http://[your_server_IP]:8080/myapp。如果你看到你的应用的欢迎页面,恭喜你,一切都已就绪。
380 17
|
4月前
|
Java 应用服务中间件 Linux
Tomcat运行日志字符错乱/项目启动时控制台日志乱码问题
总结: 通过以上几种方法,概括如下:指定编码格式、设置JVM的文件编码、修改控制台输出编码、修正JSP页面编码和设置过滤器。遵循这些步骤,你可以依次排查和解决Tomcat运行日志字符错乱及项目启动时控制台日志乱码问题。希望这些建议能对你的问题提供有效的解决方案。
838 16
|
4月前
|
Java 关系型数据库 MySQL
在Linux操作系统上设置JDK、Tomcat、MySQL以及J2EE后端接口的部署步骤
让我们总结一下,给你的Linux操作系统装备上最强的军队,需要先后装备好JDK的弓箭,布置好Tomcat的阵地,再把MySQL的物资原料准备好,最后部署好J2EE攻城车,那就准备好进军吧,你的Linux军团,无人可挡!
113 18
|
4月前
|
关系型数据库 MySQL Java
安装和配置JDK、Tomcat、MySQL环境,以及如何在Linux下更改后端端口。
遵循这些步骤,你可以顺利完成JDK、Tomcat、MySQL环境的安装和配置,并在Linux下更改后端端口。祝你顺利!
315 11
|
4月前
|
开发框架 关系型数据库 Java
Linux操作系统中JDK、Tomcat、MySQL的完整安装流程以及J2EE后端接口的部署
然后Tomcat会自动将其解压成一个名为ROOT的文件夹。重启Tomcat,让新“植物”适应新环境。访问http://localhost:8080/yourproject看到你的项目页面,说明“植物”种植成功。
125 10
|
关系型数据库 MySQL Linux
【Linux】jdk & Tomcat & MySql的安装及Linux后端接口部署
【Linux】jdk & Tomcat & MySql的安装及Linux后端接口部署
245 0
|
Java 应用服务中间件 Linux
百度搜索:蓝易云【Linux系统Tomcat安装与配置。】
Tomcat是一个开源的Java Servlet容器,它实现了Java Servlet和JavaServer Pages(JSP)规范。在Linux系统上安装和配置Tomcat可以为Java Web应用程序提供服务。
131 0
|
4月前
|
Java 关系型数据库 MySQL
在Linux平台上进行JDK、Tomcat、MySQL的安装并部署后端项目
现在,你可以通过访问http://Your_IP:Tomcat_Port/Your_Project访问你的项目了。如果一切顺利,你将看到那绚烂的胜利之光照耀在你的项目之上!
288 41
|
Java 关系型数据库 MySQL
【Linux】jdk、tomcat、MySQL环境搭建的配置安装,Linux更改后端端口
【Linux】jdk、tomcat、MySQL环境搭建的配置安装,Linux更改后端端口
250 0