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

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

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

[[email protected] conf]# pwd
/usr/local/tomcat/conf
[[email protected] conf]# cp logging.properties logging.propertiesbak
[[email protected] 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

[[email protected] src]# rpm -qa |grep cronolog
[[email protected] src]# tar zxvf cronolog-1.6.2.tar.gz 
[[email protected] src]# cd cronolog-1.6.2
[[email protected] cronolog-1.6.2]# mkdir /usr/local/cronolog
[[email protected] cronolog-1.6.2]# ./configure --prefix=/usr/local/cronolog/
......
checking for working makeinfo... missing
checking for gcc... no
checking for cc... no
configure: error: no acceptable cc found in $PATH
[[email protected] cronolog-1.6.2]# yum -y install gcc gcc-c++
[[email protected] cronolog-1.6.2]# ./configure 
[[email protected] cronolog-1.6.2]# make && make install
[[email protected] cronolog-1.6.2]# which cronolog
/usr/local/sbin/cronolog
[[email protected] cronolog-1.6.2]#

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

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

[[email protected] cronolog-1.6.2]# cp /usr/local/tomcat/bin/catalina.sh /usr/local/tomcat/bin/catalina.shbak
[[email protected] 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"
......
368 #      org.apache.catalina.startup.Bootstrap "[email protected]" start 369       org.apache.catalina.startup.Bootstrap "[email protected]" start 2>&1 370 #      >> "$CATALINA_OUT" 2>&1 &
371       | /usr/local/sbin/cronolog "$CATALINA_OUT" >> /dev/null &
......
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 "[email protected]" start 369 #      >> "$CATALINA_OUT" 2>&1 &
370      org.apache.catalina.startup.Bootstrap "[email protected]" 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 "[email protected]" start 380 #     >> "$CATALINA_OUT" 2>&1 &
381       org.apache.catalina.startup.Bootstrap "[email protected]" start 2>&1 \ 
382       | /usr/local/sbin/cronolog "$CATALINA_OUT" >> /dev/null &
383 
384   fi
[[email protected] cronolog-1.6.2]# service tomcat stop
[[email protected] cronolog-1.6.2]# service tomcat start

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

[[email protected] logs]# crontab -e
no crontab for root - using an empty one
crontab: installing new crontab
[[email protected] logs]# crontab -l
30 5 * * 6 /bin/find /usr/local/tomcat/logs/ -mtime +7 -type f -name "catalina.*.out" -exec /bin/rm -f {} \;
[[email protected] 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 {} \;
[[email protected] logs]#

补:nginx的log日志分为access.log和error.log;其中access.log 记录了哪些用户、哪些页面以及用户浏览器、ip和其他的访问信息;error.log则是记录服务器错误日志.

error.log日志的形式如下:

201.158.69.116 - - [03/Jan/2013:21:17:20 -0600] fwf[-] tip[-] 127.0.0.1:9000 0.007 0.007 MX pythontab.com GET /html/test.html HTTP/1.1 "200" 2426 "http://a.com" "es-ES,es;q=0.8" "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11"
187.171.69.177 - - [03/Jan/2013:21:17:20 -0600] fwf[-] tip[-] 127.0.0.1:9000 0.006 0.006 MX pythontab.com GET /html/test2.html HTTP/1.1 "200" 2426 "http://a.com" "es-ES,es;q=0.8" "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11"

从上面我们可以看出几部分信息:

1.客户端(用户)IP地址。如:上例中的 201.158.69.116

2.访问时间。如:上例中的 [03/Jan/2013:21:17:20 -0600]

3.访问端口。如:上例中的 127.0.0.1:9000

4.响应时间。如:上例中的 0.007

5.请求时间。如:上例中的 0.007

6.用户地理位置代码(国家代码)。如:上例中的 MX(墨西哥)

7.请求的url地址(目标url地址)的host。如:上例中的 pythontab.com

8.请求方式(GET或者POST等)。如:上例中的 GET

9.请求url地址(去除host部分)。如:上例中的 /html/test.html

10.请求状态(状态码,200表示成功,404表示页面不存在,301表示永久重定向等,具体状态码可以在网上找相关文章,不再赘述)。如:上例中的 "200"

11.请求页面大小,默认为B(byte)。如:上例中的 2426

12.来源页面,即从哪个页面转到本页,专业名称叫做“referer”。如:上例中的 "http://a.com"

13.用户浏览器语言。如:上例中的 "es-ES,es;q=0.8"

14.用户浏览器其他信息,浏览器版本、浏览器类型等。如:上例中的  "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11"

access.log日志的格式不是一成不变的,是可以自定义的。在nginx的nginx.conf配置文件找到:log_format 这里就是日志的格式

log_format main ‘$remote_addr - $remote_user [$time_local] ‘
                     ‘fwf[$http_x_forwarded_for] tip[$http_true_client_ip] ‘
                     ‘$upstream_addr $upstream_response_time $request_time ‘
                     ‘$geoip_country_code ‘
                     ‘$http_host $request ‘
                     ‘"$status" $body_bytes_sent "$http_referer" ‘
                     ‘"$http_accept_language" "$http_user_agent" ‘;
112.97.37.90 - - [14/Sep/2013:14:37:39 +0800] "GET / HTTP/1.1" 301 5 "-" "Mozilla/5.0 (Linux; U; Android 2.3.6; zh-cn; Lenovo A326 Build/GRK39F) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1 MicroMessenger/4.5.1.259" -
时间: 2024-07-30 01:38:44

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

Linux下定时切割Mongodb数据库日志并删除指定天数前的日志记录(转)

文章转自:http://www.osyunwei.com/archives/8998.html 说明: 操作系统:CentOS Mongodb安装目录:/usr/local/mongodb Mongodb数据库存放目录:/home/data/mongodb/mongodb_data Mongodb日志存放目录:/home/data/mongodb/mongodb_log 实现目的: 对Mongodb数据库日志按天保存,并且只保留最近7天的日志记录. 具体操作: 使用Mongodb数据库自带的命令

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

nginx的log日志分为access.log和error.log:其中access.log 记录了哪些用户.哪些页面以及用户浏览器.ip和其他的访问信息:error.log则是记录服务器错误日志. error.log日志的形式如下: 201.158.69.116 - - [03/Jan/2013:21:17:20 -0600] fwf[-] tip[-] 127.0.0.1:9000 0.007 0.007 MX pythontab.com GET /html/test.html HTTP/1

Linux下自动备份Oracle数据库并删除指定天数前的备份

Oracle数据库服务器 操作系统:CentOS IP:192.168.0.198 端口:1521 SID:orcl Oracle数据库版本:Oracle11gR2 具体操作: 1.root用户登录服务器 mkdir -p /backup/oracledata #新建Oracle数据库备份目录 chown -R oracle:oinstall /backup/oracledata -R #设置目录权限为oinstall用户组的oracle用户(用户oracle与用户组oinstall是在安装Or

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

使用cronolog工具切分Tomcat的catalina.out日志文件 普通用户下载.安装cronolog [[email protected] ~]$ tar -xf cronolog-1.6.2.tar.gz [[email protected] ~]$ cd cronolog-1.6.2/ [[email protected] cronolog-1.6.2]$  ./configure --prefix=/home/tomcat/cronolog make make install r

Linux下定时重启Tomcat(修改)

1.写一个shell脚本test.sh,重新启动tomcat [java] view plaincopy #!/bin/sh . /etc/profile pid=`ps aux | grep tomcat | grep -v grep | grep -v retomcat | awk '{print $2}'` echo $pid if [ -n "$pid" ] then { echo ===========shutdown================ /opt/tomcat/

Linux下通过脚本自动备份Oracle数据库并删除指定天数前的备份

#!/bin/bash #设置Oracle数据库运行账号及oracle的系统环境变量 export ORACLE_BASE=/data/oracle export ORACLE_HOME=$ORACLE_BASE/product/10g export ORACLE_SID=test export PATH=$ORACLE_HOME/bin:$HOME/bin:$PATH export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$ORACLE_HOME/network/li

Linux实现定时备份MySQL数据库并删除30天前的备份文件

1. MySQL5.6以上版本 2. 修改 /etc/my.cnf 文件 # vim /etc/my.cnf [client] host=localhost user=你的数据库用户 password='你的数据库密码' 3. 编写数据库脚本 mysql-backup.sh # vim mysql-backup.sh #!/bin/bash backupDir=数据库备份目录 backupTime=`date +%Y%m%d%H%M%S` mysqldump 你的数据库 | gzip > $ba

让linux每天定时备份MySQL数据库并删除五天前的备份文件

MYSQL定期备份是一项重要的工作,但人工操作太繁琐,也难避免有所疏漏,使用下面的方法即可让系统定期备份数据.利用系统crontab来定时执行备份文件,按日期对备份结果进行保存,达到备份的目的. 1.创建备份文件夹#cd /bak#mkdir mysqldata 2.编写运行脚本#nano -w /usr/sbin/bakmysql.sh注:如使用nano编辑此代码需在每行尾添加'&&'或';'连接符,否则生成的文件名末尾字符为乱码 代码:#!/bin/bash# Name:bakmysq

Linux下定时备份MySQL数据库的Shell脚本

Linux下定时备份MySQL数据库的Shell脚本 对任何一个已经上线的网站站点来说,数据备份都是必须的.无论版本更新还是服务器迁移,备份数据的重要性不言而喻.人工备份数据的方式不单耗费大量时间和精力,还灰常不专业的说.于是,有了下面这段脚本的出现.参考了网上的很多教程,外加自己的测试,以下脚本经测试可用.#!/bin/bash#Shell Command For Backup MySQL Database Everyday Automatically By Crontab#Author :