当前位置首页 > CentOS知识

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

阅读次数:329 次  来源:admin  发布时间:

一,为什么使用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) 
上一篇:centos使用docker安装rabbitMq消息队列
下一篇:CentOS7通过RVM来安装指定版本的Ruby