zoukankan      html  css  js  c++  java
  • 日志分隔工具Cronolog

    注:本文转载自 https://blog.csdn.net/weixin_38860565/article/details/81633234

    Cronolog 分割 Tomcat8 Catalina.out日志。
    默认情况下,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文件,要修改的在290行。修改前先拷贝一份。

    1. cp catalina.sh catalina.sh.bak
    2. vim catalina.sh -c 417 或者 vim catalina.sh之后:417 (进入到catalina.sh的第417行。)
    下面为需要修改的内容:标红的是要修改的区域


    修改为:
    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/local/sbin/cronolog "$CATALINA_BASE"/logs/catalina.%Y-%m-%d.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/local/sbin/cronolog "$CATALINA_BASE"/logs/catalina.%Y-%m-%d.out >> /dev/null &

    fi

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

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

    三、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文件进行数据清理任务,根据自己需求灵活变化清理时间和脚本防止的地址)

  • 相关阅读:
    模块
    关于使用 jBox 对话框的提交问题
    Julia is a high-level, high-performance dynamic programming language for technical computing, with syntax that is familiar to users of other technical
    Julia语言:让高性能科学计算人人可用
    [ASP.NET Web API]如何Host定义在独立程序集中的Controller
    ASHX呼叫ASPX.cs的方法
    robotlegs2.0框架实例源码带注释
    指针指向一块内存,它的内容是所指内存的地址;而引用则是某块内存的别名(转)
    老板该如何正确的犒赏程序员(转)
    Jass 技能模型定义(转)
  • 原文地址:https://www.cnblogs.com/code-juggler/p/10523157.html
Copyright © 2011-2022 走看看