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

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

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


普通用户下载、安装cronolog

1
2
3
4
5
[tomcat@localhost ~]$ tar -xf cronolog-1.6.2.tar.gz
[tomcat@localhost ~]$ cd cronolog-1.6.2/
[tomcat@localhost cronolog-1.6.2]$  ./configure --prefix=/home/tomcat/cronolog
make
make install

root用户下下载、安装cronolog

1
2
3
4
5
6
7
[root@localhost ~]# rpm -qa |grep cronolog
[root@localhost ~]# tar zxvf cronolog-1.6.2.tar.gz 
[root@localhost ~]# 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


在普通用户的家目录下编辑.bash_profile文件里添加“$HOME/cronolog/sbin”添加cronolog的安装路径

[tomcat@localhost ~]$ vi .bash_profile 

1
2
3
4
5
6
7
8
# .bash_profile                                                                                                                                                                               
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
         . ~/.bashrc
fi
# User specific environment and startup programs
PATH=$PATH:$HOME/bin:$HOME/cronolog/sbin
export PATH

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


修改catalina.sh 文件

将186行【CATALINA_OUT="$CATALINA_BASE"/logs/catalina.out】修改成187行【CATALINA_OUT="$CATALINA_BASE"/logs/opres.%Y-%m-%d.out】内容,日志名可以自行定义;

注释掉370行【touch "$CATALINA_OUT"】

383、384行

 org.apache.catalina.startup.Bootstrap "$@" start \

 >> "$CATALINA_OUT" 2>&1 "&"】替换成385、386行

org.apache.catalina.startup.Bootstrap "$@" start 2>&1 \

 | /home/tomcat/cronolog/sbin/cronolog "$CATALINA_OUT" >> /dev/null 2>&1 &


396、397行

  org.apache.catalina.startup.Bootstrap "$@" start \

  >> "$CATALINA_OUT" 2>&1 "&"

替换成394、395行

org.apache.catalina.startup.Bootstrap "$@" start 2>&1 \

 | /home/tomcat/cronolog/sbin/cronolog "$CATALINA_OUT" >> /dev/null 2>&1 &

最后一步(394、395)要注意如果原本的命令只是注释掉,替换的内容一定要在原本内容的上面,不然无法正常启动,前面的替换(383、384)位置没有关系的

 

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
97 JAVA_OPTS= "-Xms512m -Xmx1024m -Xss1024K -XX:PermSize=256m -XX:MaxPermSize=512m"
  98 
  99  # OS specific support.  $var _must_ be set to either true or false.
185  if  [ -z  "$CATALINA_OUT"  ] ;  then
186    # CATALINA_OUT="$CATALINA_BASE"/logs/catalina.out
187    CATALINA_OUT= "$CATALINA_BASE" /logs/opres .%Y-%m-%d.out
370    #touch "$CATALINA_OUT"
371    if  "$1"  "-security"  ] ;  then
372      if  [ $have_tty - eq  1 ];  then
373        echo  "Using Security Manager"
374      fi
375      shift
376      eval  "\"$_RUNJAVA\""  "\"$LOGGING_CONFIG\""  $LOGGING_MANAGER $JAVA_OPTS $CATALINA_OPTS \
377       -Djava.endorsed. dirs = "\"$JAVA_ENDORSED_DIRS\""  -classpath  "\"$CLASSPATH\""  \
378       -Djava.security.manager \
379       -Djava.security.policy== "\"$CATALINA_BASE/conf/catalina.policy\""  \
380       -Dcatalina.base= "\"$CATALINA_BASE\""  \
381       -Dcatalina.home= "\"$CATALINA_HOME\""  \
382       -Djava.io.tmpdir= "\"$CATALINA_TMPDIR\""  \
383       # org.apache.catalina.startup.Bootstrap "$@" start \
384       # >> "$CATALINA_OUT" 2>&1 "&"
385        org.apache.catalina.startup.Bootstrap  "$@"  start 2>&1 \
386         |  /home/tomcat/cronolog/sbin/cronolog  "$CATALINA_OUT"  >>  /dev/null  2>&1 &
387 
388    else
389      eval  "\"$_RUNJAVA\""  "\"$LOGGING_CONFIG\""  $LOGGING_MANAGER $JAVA_OPTS $CATALINA_OPTS \
390       -Djava.endorsed. dirs = "\"$JAVA_ENDORSED_DIRS\""  -classpath  "\"$CLASSPATH\""  \
391       -Dcatalina.base= "\"$CATALINA_BASE\""  \
392       -Dcatalina.home= "\"$CATALINA_HOME\""  \
393       -Djava.io.tmpdir= "\"$CATALINA_TMPDIR\""  \
394        org.apache.catalina.startup.Bootstrap  "$@"  start 2>&1 \
395         |  /home/tomcat/cronolog/sbin/cronolog  "$CATALINA_OUT"  >>  /dev/null  2>&1 &
396      #  org.apache.catalina.startup.Bootstrap "$@" start \
397      #  >> "$CATALINA_OUT" 2>&1 "&"
398    fi

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

1
2
3
4
[tomcat@localhost ~]$  crontab  -e
30 3 * * *  /bin/find  /home/tomcat/openapi/logs/  -mtime +7 - type  f -name  "opres*.*.out"  - exec  /bin/rm  -f {} \; 
[tomcat@localhost ~]$  crontab  -l                                                   
30 3 * * *  /bin/find  /home/tomcat/openapi/logs/  -mtime +7 - type  f -name  "opres*.*.out"  - exec  /bin/rm  -f {} \;

每天凌晨3点半执行清除7天之前过期日志


或者

#每天凌晨3点执行删除前7天的所有tomcat生成的日志文件(切割的日志名字与原告先的一样只是加了日期catalina.%Y-%m-%d.out)

1
2
3
4
5
6
7
8
0 3 * * *  /bin/find  /opt/tomcat  -mtime +7 - type  f -name "catalina.*.out"  - exec  /bin/rm  -rf {} \;
0 3 * * *  /bin/find  /opt/tomcat  -mtime +7 - type  f -name  "catalina.*.log" - exec  /bin/rm  -rf {} \;
0 3 * * *  /bin/find  /opt/tomcat  -mtime +7 - type  f -name  "host-manager.*.log" - exec  /bin/rm  -rf {} \;
0 3 * * *  /bin/find  /opt/tomcat  -mtime +7 - type  f -name "localhost.*.log"  - exec  /bin/rm  -rf {} \;
0 3 * * *  /bin/find  /opt/tomcat  -mtime +7 - type  f -name " manager.*.log"  - exec  /bin/rm  -rf {} \;
 
上面有些觉得写的太多,可以简为写成如下:
0 3 * * *  /bin/find  /opt/tomcat/logs/ * -mtime +7 - exec  /bin/rm  -rf {} \;



命令说明:

/var/www/    是查找文件的路径。
-type f    是指定文件类型为普通文件。
-mtime +30    是指修改时间距离现在30天的文件。
-exec rm -f    指执行删除匹配出来的文件并且不提示,有的系统需要带单引号,有的不需要。将以上命令,添加到crontab中,即可实现定期删除了。
比如,每天的1点30分钟实现删除,可以这样:

#每天凌晨1点执行删除前30天的日志文件

1
0 1 * * * find /aa/tomcat6.0/logs/* -mtime +30 -exec rm -f {} \;





      本文转自ling118 51CTO博客,原文链接:http://blog.51cto.com/meiling/1911769,如需转载请自行联系原作者




相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
2月前
|
存储 运维 监控
Linux--深入理与解linux文件系统与日志文件分析
深入理解 Linux 文件系统和日志文件分析,对于系统管理员和运维工程师来说至关重要。文件系统管理涉及到文件的组织、存储和检索,而日志文件则记录了系统和应用的运行状态,是排查故障和维护系统的重要依据。通过掌握文件系统和日志文件的管理和分析技能,可以有效提升系统的稳定性和安全性。
67 7
|
2月前
|
监控 安全 Linux
启用Linux防火墙日志记录和分析功能
为iptables启用日志记录对于监控进出流量至关重要
|
3月前
|
监控 Linux 开发者
如何在 Linux 中优雅的使用 head 命令,用来看日志简直溜的不行
`head` 命令是 Linux 系统中一个非常实用的工具,用于快速查看文件的开头部分内容。本文介绍了 `head` 命令的基本用法、高级用法、实际应用案例及注意事项,帮助用户高效处理文件和日志,提升工作效率。
62 7
|
4月前
|
监控 网络协议 安全
Linux系统日志管理
Linux系统日志管理
97 3
|
4月前
|
监控 Linux 测试技术
Linux系统命令与网络,磁盘和日志监控总结
Linux系统命令与网络,磁盘和日志监控总结
107 0
|
4月前
|
监控 Linux 测试技术
Linux系统命令与网络,磁盘和日志监控三
Linux系统命令与网络,磁盘和日志监控三
71 0
|
6月前
|
应用服务中间件 Linux 网络安全
【Azure 应用服务】App Service for Linux 环境中为Tomcat页面修改默认的Azure 404页面
【Azure 应用服务】App Service for Linux 环境中为Tomcat页面修改默认的Azure 404页面
|
4月前
|
安全 应用服务中间件 网络安全
Tomcat如何配置PFX证书?
【10月更文挑战第2天】Tomcat如何配置PFX证书?
348 7
|
4月前
|
存储 算法 应用服务中间件
Tomcat如何配置JKS证书?
【10月更文挑战第2天】Tomcat如何配置JKS证书?
567 4
|
1月前
|
网络协议 Java 应用服务中间件
centos7环境下tomcat8的安装与配置
本文介绍了在Linux环境下安装和配置Tomcat 8的详细步骤。首先,通过无网络条件下的文件交互软件(如Xftp 6或MobaXterm)下载并解压Tomcat安装包至指定路径,启动Tomcat服务并测试访问。接着,修改Tomcat端口号以避免冲突,并部署Java Web应用项目至Tomcat服务器。最后,调整Linux防火墙规则,确保外部可以正常访问部署的应用。关键步骤包括关闭或配置防火墙、添加必要的端口规则,确保Tomcat服务稳定运行。