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

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

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

[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

[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行;

[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来实现

[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]#

日期格式串:

%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)

时间格式串:

%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),如果不能检测出时区,值为空

特殊格式串:

%%        %字符
%n        新行
%t         tab字符

总结

以上所述是小编给大家介绍的Linux下定时切割Tomcat日志并删除指定天数前的日志记录,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对我们网站的支持!

时间: 2017-08-15

LINUX 查找tomcat日志关键词命令

#查询catalina.out日志文件中的关键词为2016-04-13 11:26:00的日志信息 grep -C 10 '2016-04-13 11:26:00' catalina.out |more 解释: grep :查询,筛选 -C : grep的-A, -B, -C选项分别可以显示匹配行的后,前,后前多少行内容: 10 :是前后多少行 '2016-04-13 11:26:00' :关键词,注意是单引号包裹 catalina.out : 检索的文件 可以是目录 ./ |more : 这个

Linux tomcat下catalina.out日志文件分割

Linux tomcat下catalina.out日志文件分割 前言: tomcat默认使用Java.util.logging记录日志,默认只记录tomcat的日志,不记录应用的日志.tomcat支持采用log4j进行日志记录,配置方法如下: 1.更新最新的tomcat_juli.jar包到./bin/目录下: 2.拷贝log4j.jar,lo4j.properties到./lib目录下; 3.删除./conf/logging.properties 4.重启 log4j配置样本 实例代码: lo

linux下实时查看tomcat运行日志的方法

1.先切换到:cd usr/local/tomcat5/logs 2.tail -f catalina.out 3.这样运行时就可以实时查看运行日志了 Ctrl+c 是退出tail命令. 顺便讲一下Linux中tail命令 tail 命令从指定点开始将文件写到标准输出.使用tail命令的-f选项可以方便的查阅正在改变的日志文件,tail -f filename会把filename里最尾部的内容显示在屏幕上,并且不但刷新,使你看到最新的文件内容. 1.命令格式; tail[必要参数][选择参数][

Linux下把tomcat日志按日期自动分割

Linux中tomcat日志分割需要用到cronolog 附上cronolog-1.6.2.tar.gz 1. 安装cronolog tar –zxvf cronolog-1.6.2.tar.gz ./configure && make && make install 解压,编译, 安装 (安装后目录一般在/usr/local/中) 2. 为了能够一次正确通过还是验证一下是在哪个目录 which cronolog 3.修改catalina.sh脚本 vim /usr/loc

centos中nginx按日期自动分割访问日志的方法

Web 访问日志 (access_log) 记录了所有外部客户端对Web服务器的访问行为,包含了客户端IP,访问日期,访问的URL资源,服务器返回的HTTP状态码等重要信息. 一条典型的Web访问日志如下: 复制代码 代码如下: 192.168.50.195 - - [17/Jun/2016:23:59:12 +0800] "GET / HTTP/1.1" 304 0 "-" "Mozilla/5.0 (Windows NT 10.0; WOW64) Ap

Python中logging日志记录到文件及自动分割的操作代码

日志作为项目开发和运行中必备组件,python提供了内置的logging模块来完成这个工作:借助 TimedRotatingFileHandler 可以按日期自动分割日志,自动保留日志文件数量等,下面是对日志的一个简单封装和测试. import logging import os from logging import handlers class Logger(object): # 日志级别关系映射 level_relations = { 'debug': logging.DEBUG, 'in

django实现日志按日期分割

settings文件中配置: LOGGING = { 'version':1, 'disable_existing_logger':False, 'formatters':{ 'verbose':{ 'format':'%(asctime)s \"%(pathname)s:%(module)s:%(funcName)s:%(lineno)d\" [%(levelname)s]-%(message)s' }, }, # 处理器 'handlers':{ # 输出控制台 'console'

tomcat在linux中修改日志路径

1.   修改catalina.sh 进入tomcat安装目录/bin,找到catalina.sh,并下载到本地,同时进行备份. 对本地的catalina.sh进行修改,将下图红框所示地方改为CATALINA_OUT=/u01/app/dt/dt_logs 这里是以将日志目录修改为/u01/app/dt/dt_logs为例,以下都以此目录为例. 修改后如下 将修改后的catalina.sh文件上传到tomcat安装目录/bin,覆盖原来的文件. 2.   修改logging.properties

Linux中logrotate日志轮询操作总结

前言 对于Linux系统安全来说,日志文件是极其重要的工具.不知为何,我发现很多运维同学的服务器上都运行着一些诸如每天切分Nginx日志之类的CRON脚本,大家似乎遗忘了Logrotate,争相发明自己的轮子,这真是让人沮丧啊!就好比明明身边躺着现成的性感美女,大家却忙着自娱自乐,罪过!logrotate程序是一个日志文件管理工具.用于分割日志文件,删除旧的日志文件,并创建新的日志文件,起到"转储"作用.可以节省磁盘空间. 下面就对logrotate日志轮转操作做一梳理记录: 1)配置

MongoDB运行日志实现自动分割的方法实例

前言 其实所谓自动分割MongoDB日志文件,就是指Rotate MongoDB log files,即让MongoDB每天(或每个星期,可自定义控制)生成一个日志文件,而不是将MongoDB所有的运行日志都放置在一个文件中,这样每个日志文件都相对较小,定位问题也更容易. 实现自动分割MongoDB日志的方法可以参考:https://docs.mongodb.com/manual/tutorial/rotate-log-files/ 现在以一个MongoDB实例为例,可以写一个脚本来实现自动分割

linux解决Tomcat内存溢出的问题

Tomcat本身不能直接在计算机上运行,需要依赖于操作系统和一个JAVA虚拟机.JAVA程序启动时JVM会分配一个初始内存和最大内存给程序.当程序需要的内存超出内存的最大值时虚拟机就会提示内存溢出,并且导致应用服务崩溃. 一.常见的Java内存溢出有以下三种: 1. java.lang.OutOfMemoryError: Java heap space 即JVM Heap溢出 解释说明:JVM在启动的时候会自动设置JVM Heap的值,JVM堆的设置是指java程序运行过程中JVM可以调配使用的