zoukankan      html  css  js  c++  java
  • 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) 
  • 相关阅读:
    uva 10369 Arctic Network
    uvalive 5834 Genghis Khan The Conqueror
    uvalive 4848 Tour Belt
    uvalive 4960 Sensor Network
    codeforces 798c Mike And Gcd Problem
    codeforces 796c Bank Hacking
    codeforces 768c Jon Snow And His Favourite Number
    hdu 1114 Piggy-Bank
    poj 1276 Cash Machine
    bzoj 2423 最长公共子序列
  • 原文地址:https://www.cnblogs.com/architectforest/p/13879412.html
Copyright © 2011-2022 走看看