• linux(centos8):用apache的rotatelogs做nohup的日志切分


    一,为什么使用rotatelogs做日志切分?

    1,什么是roatelogs?
    rotatelogs是apache提供的日志滚动切分的工具
    官方文档:
    https://httpd.apache.org/docs/2.4/programs/rotatelogs.html

    2,日志切分的方法:

       可以复制文件内容后然后把当前日志文件置空

       可以使用linux自带的logrotate服务

       可以使用通过管道进行日志处理的工具进行日志切分( cronolog,rotatelogs)

       cronolog已经多年没有维护过了,

       我们使用apache官方出品的rotatelogs来进行日志的切分

     

    说明:刘宏缔的架构森林是一个专注架构的博客,地址:https://www.cnblogs.com/architectforest

             对应的源码可以访问这里获取: https://github.com/liuhongdi/

    说明:作者:刘宏缔 邮箱: 371125307@qq.com

     

    二,安装rotatelogs

    1,用dnf安装即可:
    [root@blog tools]# dnf install httpd

    说明:rotatelogs命令被包含在httpd这个包当中

    2,查看已安装的效果:

    [root@blog ~]# whereis rotatelogs
    rotatelogs: /usr/sbin/rotatelogs /usr/share/man/man8/rotatelogs.8.gz
    3,查看rotatelogs命令的版本:
    因为没有提供查看版本的选项,只可以查看它所属的httpd包的版本:
    [root@blog ~]# /usr/sbin/httpd -v
    Server version: Apache/2.4.37 (centos)
    Server built:   Sep 15 2020 15:41:16

    4,查看rotatelogs命令的手册:

    [root@blog ~]# man rotatelogs

    查看rotatelogs命令的帮助:

    [root@blog ~]# rotatelogs --help

    三,rotelogs的使用举例:

    1,每1分钟生成一个日志文件:
    # | /usr/sbin/rotatelogs  指定 rotatelogs程序文件的路径,注意和nohup命令中间用了管道符连接
    # /data/nohup.%Y-%m-%d-%H_%M_%S.log :  这个是我们指定的日志文件,文件名中包含了年月日时分秒
    #60   :切换日志文件的时间间隔,单位是秒,我们这里指定为1分钟
    #480 :相对于UTC的时差的分钟数。如果省略,则假定为0,并使用UTC时间。我们位于UTC时差为8小时的地区的当地时间,则此参数应为480分钟
    [root@blog tools]# nohup /usr/local/soft/jdk-15/bin/java -jar /data/java/jar/web-0.0.1-SNAPSHOT.jar --spring.profiles.active=prd 2>&1 | /usr/sbin/rotatelogs /data/nohup.%Y-%m-%d-%H_%M_%S.log 60 480 &

    查看生成的日志文件:

    [root@blog ~]# ll /data/nohup.2020-10-26-*
    -rw-r--r-- 1 root root 15644 Oct 26 16:08 /data/nohup.2020-10-26-08_08_00
    -rw-r--r-- 1 root root   443 Oct 26 16:09 /data/nohup.2020-10-26-08_09_00
    -rw-r--r-- 1 root root  5514 Oct 26 16:09 /data/nohup.2020-10-26-16_09_00
    -rw-r--r-- 1 root root  7467 Oct 26 16:10 /data/nohup.2020-10-26-16_10_00

    2,每50M生成一个日志文件:

    #50M:文件发生滚动分割时的大小

    [root@blog tools]# nohup /usr/local/soft/jdk-15/bin/java -jar /data/java/jar/web-0.0.1-SNAPSHOT.jar --spring.profiles.active=prd 2>&1 | /usr/sbin/rotatelogs /data/nohup.%Y-%m-%d-%H_%M_%S 50M 480 &

    3,手册中提供的命令语法:

    rotatelogs [ -l ] [ -L linkname ] [ -p program ] [ -f ] [ -D ] [ -t ] [ -v ] [ -e ] [ -c ] [ -n number-of-files ] logfile rotationtime|filesize(B|K|M|G) [ offset ]

    四,一个nohup日志切分的例子:

    每天生成一个日志文件,这是较常用的做法:

    1,bash脚本:

    [root@blog ~]# more /data/java/tools/startadmin.sh
    #!/bin/bash
    export BUILD_ID=dontKillme
    WORKSPACE=/data/java/jar
    JDK_PATH=/usr/local/soft/jdk-15/bin/java
    JAR_NAME=web-0.0.1-SNAPSHOT.jar
    
    PID=`ps -ef | grep ${JAR_NAME} | grep -v grep | grep -v startup | awk '{print $2}'`
    echo $PID;
    if [ ! "$PID" ] ;then
         echo "进程不存在"
    else
        echo "进程存在,杀死进程PID$PID"
        kill -9 $PID
    fi
    
    echo "服务启动开始"
    nohup ${JDK_PATH} -jar ${WORKSPACE}/${JAR_NAME} --spring.profiles.active=prd 2>&1 | /usr/sbin/rotatelogs /data/merchant/logs/run_%Y%m%d.log 86400 480 &

    2,查看生成的日志:

    [root@blog ~]# ll /data/merchant/logs/run_*
    -rw-r--r-- 1 root root 5514 Oct 26 16:55 /data/merchant/logs/run_20201026.log

    五,查看centos的版本: 

    [root@blog liuhongdi]# cat /etc/redhat-release 
    CentOS Linux release 8.2.2004 (Core) 
  • 相关阅读:
    POJ1811 Prime Test
    HDU3864 D_num
    HDU2138 How many prime numbers
    SPOJ1812 LCS2
    SPOJ1811 LCS
    SPOJ8222 NSUBSTR
    BZOJ4237 稻草人
    洛谷P3601 签到题
    ThreadLocal 线程的私有内存
    netty in action 笔记 二
  • 原文地址:https://www.cnblogs.com/architectforest/p/13879412.html
Copyright © 2020-2023  润新知