设为首页 收藏本站
查看: 8094|回复: 0

[经验分享] Linux下定时切割Tomcat日志并删除指定天数前的日志记录

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2015-4-3 10:46:21 | 显示全部楼层 |阅读模式
system.out和System.err都被打印到catalina.out。catalina.out不会rotate。一般在部署Tomcat后,运行久了,catalina.out文件会越来越大,对系统的稳定造成了一定的影响。1、可通过修改conf/logging.properties日志配置文件来屏蔽掉这部分的日志信息。
1
2
3
4
5
6
7
[iyunv@localhost conf]# pwd
/usr/local/tomcat/conf
[iyunv@localhost conf]# cp logging.properties logging.propertiesbak
[iyunv@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
9
10
11
12
13
14
15
16
[iyunv@localhost src]# rpm -qa |grep cronolog
[iyunv@localhost src]# tar zxvf cronolog-1.6.2.tar.gz
[iyunv@localhost src]# cd cronolog-1.6.2
[iyunv@localhost cronolog-1.6.2]# mkdir /usr/local/cronolog
[iyunv@localhost 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
[iyunv@localhost cronolog-1.6.2]# yum -y install gcc gcc-c++
[iyunv@localhost cronolog-1.6.2]# ./configure
[iyunv@localhost cronolog-1.6.2]# make && make install
[iyunv@localhost cronolog-1.6.2]# which cronolog
/usr/local/sbin/cronolog
[iyunv@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
[iyunv@localhost cronolog-1.6.2]# cp /usr/local/tomcat/bin/catalina.sh /usr/local/tomcat/bin/catalina.shbak
[iyunv@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"
......
368 #      org.apache.catalina.startup.Bootstrap "$@" start \
369       org.apache.catalina.startup.Bootstrap "$@" 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 "$@" 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
[iyunv@localhost cronolog-1.6.2]# service tomcat stop
[iyunv@localhost cronolog-1.6.2]# service tomcat start



这样在/usr/local/tomcat/logs每天会自动生成catalina.%Y-%m-%d.out文件,下面我们要做的是定期清理这些过期的文件,我们可以通过crontab来实现
1
2
3
4
5
6
7
8
[iyunv@localhost logs]# crontab -e
no crontab for root - using an empty one
crontab: installing new crontab
[iyunv@localhost logs]# crontab -l
30 5 * * 6 /bin/find /usr/local/tomcat/logs/ -mtime +7 -type f -name "catalina.*.out" -exec /bin/rm -f {} \;
[iyunv@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 {} \;
[iyunv@localhost logs]#




补:nginx的log日志分为access.log和error.log;其中access.log 记录了哪些用户、哪些页面以及用户浏览器、ip和其他的访问信息;error.log则是记录服务器错误日志.
error.log日志的形式如下:
1
2
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 这里就是日志的格式
1
2
3
4
5
6
7
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" ';



1
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" -





运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-53471-1-1.html 上篇帖子: linux centos6.5下一台虚拟机搭建多个tomcat方法 下篇帖子: Linux下nginx+tomcat负载均衡 日志记录 Linux 切割
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表