随笔 - 81  文章 - 0  评论 - 1  阅读 - 15万

日志分隔工具Cronolog的使用 (Tomcat)

默认情况下,tomcat的catalina.out日志文件是没有像其它日志一样,按日期进行分割,而是全部输出全部写入到一个catalina.out,这样日积月累就会造成.out日志越来越大,给管理造成了不便,为了实现像其它日志文件一样按日期归档,这里采用cronolog来完成日志分割。
一、安装Cronolog

    YUM 安装

      yum install cronolog

    或者使用下载压缩包安装

          1. 下载(最新版本)
              wget http://cronolog.org/download/cronolog-1.6.2.tar.gz
         
          2. 解压缩
              tar zxvf cronolog-1.6.2.tar.gz
         
          3. 进入安装目录
              cd cronolog-1.6.2
         
          4. 运行安装
              ./configure
              make
              make install
         
          5. 查看是否安装成功
              which cronolog
              结果:/usr/local/sbin/cronolog  (这个是cronolog的安装路径,后面会用到)

    如果上面两种下载方式都受到网络限制,可以去自由软件库下载 http://download.chinaunix.net/download.php?id=3457&ResourceID=1851

修改Tomcat下bin/catalina.sh文件

修改:

为:

    修改要分隔的Tomcat的日志下bin/catalina.sh文件。修改前先拷贝一份。
     
    1. cp catalina.sh catalina.sh.bak
    2. vim catalina.sh
    下面为需要修改的内容:标红的是要修改的区域

 

    修改为:
      shift
      # touch "$CATALINA_OUT"
      if [ "$1" = "-security" ] ; then
        if [ $have_tty -eq 1 ]; then
          echo "Using Security Manager"
        fi
        shift
        eval $_NOHUP "\"$_RUNJAVA\"" "\"$LOGGING_CONFIG\"" $LOGGING_MANAGER $JAVA_OPTS $CATALINA_OPTS \
          -classpath "\"$CLASSPATH\"" \
          -Djava.security.manager \
          -Djava.security.policy=="\"$CATALINA_BASE/conf/catalina.policy\"" \
          -Dcatalina.base="\"$CATALINA_BASE\"" \
          -Dcatalina.home="\"$CATALINA_HOME\"" \
          -Djava.io.tmpdir="\"$CATALINA_TMPDIR\"" \
          org.apache.catalina.startup.Bootstrap "$@" start 2>&1 \
          | /usr/sbin/cronolog "$CATALINA_OUT" >> /dev/null &
     
      else
        eval $_NOHUP "\"$_RUNJAVA\"" "\"$LOGGING_CONFIG\"" $LOGGING_MANAGER $JAVA_OPTS $CATALINA_OPTS \
          -classpath "\"$CLASSPATH\"" \
          -Dcatalina.base="\"$CATALINA_BASE\"" \
          -Dcatalina.home="\"$CATALINA_HOME\"" \
          -Djava.io.tmpdir="\"$CATALINA_TMPDIR\"" \
          org.apache.catalina.startup.Bootstrap "$@" start 2>&1 \
          | /usr/sbin/cronolog "$CATALINA_OUT" >> /dev/null &
     
      fi

修改后,重启Tomcat。可以看到更改已经生效。(看到catalina.out出现了catalina.2017-12-19.out等按照日期分类的输出文件说明配置成功)。

 

    如果配置不成功,肯定是修改的位置不对。
    本文后也附有catalina.out修改后的完整内容,直接复制粘贴,替换掉catalina.out内的内容即可。

2.png
三、shell利用crontab自动清除日志

linux下运行程序有时会产生大量的记录日志,以便排除隐藏很深的问题,但时间一长就会占用很多的磁盘空间。每天手动清除也比较麻烦,因此一个定时脚本执行是很有必要的。

3.1 删除文件shell命令详解

 

    find 对应目录 -mtime +天数 -name "文件名" -exec rm -rf {} \;
     
    例子:
        find /opt/soft/log/ -mtime +30 -name "*.log" -exec rm -rf {} \;
     
    说明:将/opt/soft/log/目录下所有30天前带".log"的文件删除。具体参数说明如下:
        find:linux的查找命令,用户查找指定条件的文件;
        /opt/soft/log/:想要进行清理的任意目录;
        -mtime:标准语句写法;
        +30:查找30天前的文件,这里用数字代表天数;
        "*.log":希望查找的数据类型,"*.jpg"表示查找扩展名为jpg的所有文件,"*"表示查找所有文件,这个可以灵活运用,举一反三;
        -exec:固定写法;
        rm -rf:强制删除文件,包括目录;
        {} \; :固定写法,一对大括号+空格+\+; 

3.2 创建shell脚本即crontab计划任务

    创建shell脚本:

     vim del-15-days-ago-logs.sh

    脚本内输入以下内容,可以写多行,以分号分隔,同时管理多个tomcat的日志:

         (这里我尝试如果加上#!/bin/sh计划任务不能生效,因此我没加。另外该脚本与计划任务内不要有注释。)
         
         find /opt/soft/log/ -mtime +30 -name "*.log" -exec rm -rf {} \;

    分配可运行权限:

     chmod +x del-15-days-ago-logs.sh

    使用crontab加入到系统计划任务:

         crontab -e
         
         在计划任务内输入以下内容:
         
             10 0 * * * /opt/soft/log/del-15-days-ago-logs.sh >/dev/null 2>&1
             (这里设置的是每天凌晨0点10分执行del-15-days-ago-logs.sh文件进行数据清理任务,根据自己需求灵活变化清理时间和脚本防止的地址)

    上述操作进行完后,就可以了,为了方便测试,可以创建n天前创建的文件。

         touch -d "30 days ago" catalina.19-12-10.out
         touch -d "30 days ago" catalina.19-12-11.out
         .......

posted on   幽夜卡尔  阅读(502)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek “源神”启动!「GitHub 热点速览」
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
· DeepSeek R1 简明指南:架构、训练、本地部署及硬件要求
· NetPad:一个.NET开源、跨平台的C#编辑器
< 2025年2月 >
26 27 28 29 30 31 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 1
2 3 4 5 6 7 8

点击右上角即可分享
微信分享提示