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

[经验分享] tomcat日志自动分割

[复制链接]

尚未签到

发表于 2018-12-6 13:53:55 | 显示全部楼层 |阅读模式
今天在tomcat上查看项目日志的时候,发现catalina.out文件竟然已经达到202M了,决定做一下日志的分割.先看了一下crontab任务中,发现有个删除前10天日志的自动任务,但是没有发现切割的自动任务.  放狗搜了一下,据说tomcat有默认的日志分割功能,能每天自动生成类似catalina.2010-10-08.log的文件,但是默认catalina.out文件却一直增长.据说到一定大小时占磁盘空间(废话),影响性能,且会报错,这点暂时没发现.其他的查了一下logs文件确实如此.
  解决方法,使用cronolog进行日志切割,据说cronolog是个切割日志的小工具,可以切割很多种日志文件,有空得试试.具体做法如下:
  1、下载(最新版本)
  # wget http://cronolog.org/download/cronolog-1.6.2.tar.gz
  2、解压缩
  # tar zxvf cronolog-1.6.2.tar.gz
  3、进入cronolog安装文件所在目录
  # cd cronolog-1.6.2
  4、运行安装
  # ./configure
  # make
  # make install
  5、查看cronolog安装后所在目录(验证安装是否成功)
  # which cronolog
  一般情况下显示为:/usr/local/sbin/cronolog
  6.进入Tomcat的bin目录,打开catalina.sh文件,找到tomcat启动的相关行,或者你直接查找catalina.out,一般我们修改下面行中的内容(因为我们一般不会在-security条件下运行),
  else
  “$_RUNJAVA” $JAVA_OPTS $CATALINA_OPTS \
  -Djava.endorsed.dirs=”$JAVA_ENDORSED_DIRS” -classpath “$CLASSPATH” \
  -Dcatalina.base=”$CATALINA_BASE” \
  -Dcatalina.home=”$CATALINA_HOME” \
  -Djava.io.tmpdir=”$CATALINA_TMPDIR” \
  org.apache.catalina.startup.Bootstrap “$@” start  \
  >> “$CATALINA_BASE”/logs/catalina.out 2>&1 &
  if [ ! -z "$CATALINA_PID" ]; then
  echo $! > $CATALINA_PID
  fi
  fi
  修改
  org.apache.catalina.startup.Bootstrap “$@” start  \
  >> “$CATALINA_BASE”/logs/catalina.out 2>&1 &
  为
  org.apache.catalina.startup.Bootstrap “$@” start 2>&1 \
  | /usr/local/sbin/cronolog “$CATALINA_BASE”/logs/catalina.%Y-%m-%d.out >> /dev/null &

  修改第339行
  同时,上面有一行
  touch “$CATALINA_BASE”/logs/catalina.out 可以注释掉,第316行

  完成之后重起Tomcat就可以了,在logs目录下可以看到catalina.2009-02-18.out的日志,是按日生成的。
以上内容均参考网络上的帖子,有一个地方不明白,一个地方需要明天验证.  不明白的:
  "org.apache.catalina.startup.Bootstrap “$@” start 2>&1 \
  | /usr/local/sbin/cronolog “$CATALINA_BASE”/logs/catalina.%Y-%m-%d.out >> /dev/null &"中为什么要加">> /dev/null"而不是直接">> /usr/local/sbin/cronolog “$CATALINA_BASE”/logs/catalina.%Y-%m-%d.out"直接把输出都重定向到catalina.%Y-%m-%d.out文件.这个得找时间再查查,也希望知道的朋友留言告诉我一下.
  需要验证的:
  注释掉touch “$CATALINA_BASE”/logs/catalina.out以后,不产生catalina.out,那么当前输出是输出到今天的文件catalina.%Y-%m-%d.out吗?它会每日执行切割并定向到新的日志文件?没看到切割的定时任务,那么这个定时任务是由tomcat本身维护的?cronolog只是提供切割方法?(之前说到tomcat默认也提供切割,貌似都可以不需要cronolog,只要注释touch行就行...找机会试试)
  对了,还看到另外一种解决方法,纯shell实现的.
  编写一个.sh文件,并放到tomcat下的bin目录,在cron中自动执行,shell脚本如下:
  #!/bin/bash
  cd `dirname $0`
  d=`date +%Y%m%d`
  d7=`date -d'7 day ago' +%Y%m%d`
  cd ../logs/
  cp catalina.out catalina.out.${d}
  echo "" > catalina.out
  rm -rf catalina.out.${d7}
  同样有个问题cd `dirname $0` 没看懂什么意思
  原来,
  $0获取当前Shell程序的文件名
  dirname $0,获取当前Shell程序的路径
  cd `dirname $0`,进入当前Shell程序的目录


运维网声明 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-644039-1-1.html 上篇帖子: Tomcat数据源配置 下篇帖子: 单机配置tomcat 8 集群
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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