按日切割SpringBoot项目日志插件及shell脚本

好久好久没更新文章了,感觉自己都比较懒散了。。。事也多,也不知道想给大家分享什么。

今天这个事我觉得可以给大家分享一下。故事开始:

leader:你帮我找一下昨天的短信发送异常的日志。

小优优:好嘞。

小优优:小优优把昨天同事给小优优发的图片直接给了Leader。

leader:我要文本的。

小优优:好的,我从服务器给拉一下。

默默打开打开服务器,一看日志文件 26kb,就剩今天重启后生成的日志。

file

呵呵呵呵呵呵呵呵呵呵呵,MD 日志没了。。。

一想到leader的脸:怕了怕了。。。。

file

幸好有服务器备份的jar包重新跑一下吧。麻蛋、、测试环境没问题。。。还得到生成环境跑一下有问题的jar包,复制文本给他。呕吼。彻底完犊子喽。。

file

最后用ocr把截图文本提炼给Leader了,躲过一劫。

幻想:小优优你把生成环境短信异常上下文异常复制完整一点。这可咋办。

小优优主动去找Leader,生成环境和测试环境启动脚本有问题,每次都会重新生成新的日志文件,把原有的日志问题给删除。

leader:那你想办法解决一下。

小优优:好的(心里想:可算逃过一劫。。)

给大家分享一下原来的shell脚本:

#!/bin/bash
## Author kingyifan
## UPDATE 2019-11-14
version="1.0.1";

appName=$2
if [ -z $appName ];then
    appName=`ls -t |grep .jar$ |head -n1`
fi

function start()
{
	count=`ps -ef |grep java|grep $appName|wc -l`
	if [ $count != 0 ];then
		echo "Maybe $appName is running, please check it..."
	else
		echo "The $appName is starting..."
		nohup java -jar ./$appName -XX:+UseG1GC -XX:+HeapDumpOnOutOfMemoryError -Xms128M -Xmx512M > catalina.log 2>&1 &
	fi
}

function stop()
{
	appId=`ps -ef |grep java|grep $appName|awk '{print $2}'`
	if [ -z $appId ];then
	    echo "Maybe $appName not running, please check it..."
	else
        echo "The $appName is stopping..."
        kill $appId
	fi
}

function restart()
{
    # get release version
    releaseApp=`ls -t |grep .jar$ |head -n1`
    
    # get last version 
    lastVersionApp=`ls -t |grep .jar$ |head -n2 |tail -n1`

    appName=$lastVersionApp
    stop
    for i in {5..1}
    do
        echo -n "$i "
        sleep 1
    done
    echo 0
    
    backup
    
    appName=$releaseApp
    start
}

function backup() 
{
    # get backup version
    backupApp=`ls |grep -wv $releaseApp$ |grep .jar$`
    
    # create backup dir
    if [ ! -d "backup" ];then
        mkdir backup
    fi
    
    # backup
    for i in ${backupApp[@]}
    do
        echo "backup" $i
        mv $i backup
    done
}

function status()
{
    appId=`ps -ef |grep java|grep $appName|awk '{print $2}'`
	if [ -z $appId ] 
	then
	    echo -e "\033[31m Not running \033[0m" 
	else
	    echo -e "\033[32m Running [$appId] \033[0m" 
	fi
}


function usage()
{
    echo "Usage: $0 {start|stop|restart|status|stop -f}"
    echo "Example: $0 start"
    exit 1
}

case $1 in
	start)
	start;;

	stop)
	stop;;
	
	restart)
	restart;;
	
	status)
	status;;
	
	*)
	usage;;
esac

最后更正为:

#!/bin/bash
## Author kingyifan
## UPDATE 2019-11-14
version="1.0.1";

appName=$2
if [ -z $appName ];then
    appName=`ls -t |grep .jar$ |head -n1`
fi

function start()
{
	count=`ps -ef |grep java|grep $appName|wc -l`
	if [ $count != 0 ];then
		echo "Maybe $appName is running, please check it..."
	else
		echo "The $appName is starting..."
		nohup java -jar ./$appName -XX:+UseG1GC -XX:+HeapDumpOnOutOfMemoryError -Xms128M -Xmx512M >> catalina.log 2>&1 &
	fi
}

function stop()
{
	appId=`ps -ef |grep java|grep $appName|awk '{print $2}'`
	if [ -z $appId ];then
	    echo "Maybe $appName not running, please check it..."
	else
        echo "The $appName is stopping..."
        kill $appId
	fi
}

function restart()
{
    # get release version
    releaseApp=`ls -t |grep .jar$ |head -n1`
    
    # get last version 
    lastVersionApp=`ls -t |grep .jar$ |head -n2 |tail -n1`

    appName=$lastVersionApp
    stop
    for i in {5..1}
    do
        echo -n "$i "
        sleep 1
    done
    echo 0
    
    backup
    
    appName=$releaseApp
    start
}

function backup() 
{
    # get backup version
    backupApp=`ls |grep -wv $releaseApp$ |grep .jar$`
    
    # create backup dir
    if [ ! -d "backup" ];then
        mkdir backup
    fi
    
    # backup
    for i in ${backupApp[@]}
    do
        echo "backup" $i
        mv $i backup
    done
}

function status()
{
    appId=`ps -ef |grep java|grep $appName|awk '{print $2}'`
	if [ -z $appId ] 
	then
	    echo -e "\033[31m Not running \033[0m" 
	else
	    echo -e "\033[32m Running [$appId] \033[0m" 
	fi
}


function usage()
{
    echo "Usage: $0 {start|stop|restart|status|stop -f}"
    echo "Example: $0 start"
    exit 1
}

case $1 in
	start)
	start;;

	stop)
	stop;;
	
	restart)
	restart;;
	
	status)
	status;;
	
	*)
	usage;;
esac

小伙伴你们看到有没有什么区别,貌似看不出来:>>两个箭头是追加。

file

这样一改启动可以追加日志了。

这样改完之后是可以正常追加日志了,但是如果访问量上来了,日志太多了,追查某一天的日志肿么办?

后来我们用到了新的方案:利用cronolog插件(日志切割工具)按天分隔日志。 二话不说来安装cronolog

第一步:先创建cronolog文件目录

file

进入/DATA/目录,可以存放任意目录。
cd /DATA/

//创建cronolog文件目录
mkdir cronolog

第二步上传cronlog文件:

file

cronolog文件下载路径: https://pan.baidu.com/s/1Sjx9-2_xgptQsex6qmO2Vg 提取码: qw2w

第三步:解压文件:

file

解压文件:
tar -zxvf cronolog-1.6.2.tar.gz

解压结果:

file

第四步:安装cronolog

4.1、进入cronolog-1.6.2目录

命令:
 cd cronolog-1.6.2

4.2执行./configure

file

命令:
./configure 

4.3执行安装

file

命令:
make & make install

第五步:查询是否安装成功

查看cronolog安装后所在目录(验证安装是否成功)

file

which cronolog

一般情况下显示为:/usr/local/sbin/cronolog 则为安装成功。

这样就安装成功了,现在我们改一下SpringBoot的启动shell脚本

#!/bin/bash
## Author kingyifan
## UPDATE 2019-11-14
version="1.0.1";

appName=$2
if [ -z $appName ];then
    appName=`ls -t |grep .jar$ |head -n1`
fi

function start()
{
	count=`ps -ef |grep java|grep $appName|wc -l`
	if [ $count != 0 ];then
		echo "Maybe $appName is running, please check it..."
	else
		echo "The $appName is starting..."
	    nohup java -jar ./$appName -XX:+UseG1GC -XX:+HeapDumpOnOutOfMemoryError -Xms128M -Xmx512M  | /usr/local/sbin/cronolog  ./log/catalina-%Y-%m-%d.out >>/dev/null  2>&1 &
	fi
}

function stop()
{
	appId=`ps -ef |grep java|grep $appName|awk '{print $2}'`
	if [ -z $appId ];then
	    echo "Maybe $appName not running, please check it..."
	else
        echo "The $appName is stopping..."
        kill $appId
	fi
}

function restart()
{
    # get release version
    releaseApp=`ls -t |grep .jar$ |head -n1`
    
    # get last version 
    lastVersionApp=`ls -t |grep .jar$ |head -n2 |tail -n1`

    appName=$lastVersionApp
    stop
    for i in {5..1}
    do
        echo -n "$i "
        sleep 1
    done
    echo 0
    
    backup
    
    appName=$releaseApp
    start
}

function backup() 
{
    # get backup version
    backupApp=`ls |grep -wv $releaseApp$ |grep .jar$`
    
    # create backup dir
    if [ ! -d "backup" ];then
        mkdir backup
    fi
    
    # backup
    for i in ${backupApp[@]}
    do
        echo "backup" $i
        mv $i backup
    done
}

function status()
{
    appId=`ps -ef |grep java|grep $appName|awk '{print $2}'`
	if [ -z $appId ] 
	then
	    echo -e "\033[31m Not running \033[0m" 
	else
	    echo -e "\033[32m Running [$appId] \033[0m" 
	fi
}


function usage()
{
    echo "Usage: $0 {start|stop|restart|status|stop -f}"
    echo "Example: $0 start"
    exit 1
}

case $1 in
	start)
	start;;

	stop)
	stop;;
	
	restart)
	restart;;
	
	status)
	status;;
	
	*)
	usage;;
esac

脚本解析:
nohup java -jar ./$appName -XX:+UseG1GC -XX:+HeapDumpOnOutOfMemoryError -Xms128M -Xmx512M  | /usr/local/sbin/cronolog  ./log/catalina-%Y-%m-%d.out >>/dev/null  2>&1 &

默认启动命令: 128M和512M是最小内存和最大内存。
nohup java -jar ./$appName -XX:+UseG1GC -XX:+HeapDumpOnOutOfMemoryError -Xms128M -Xmx512M 
  
 | /usr/local/sbin/cronolog : cronolog是执行最上面which cronolog显示的地址
  
  ./log/catalina-%Y-%m-%d.out >>/dev/null  2>&1 & :会在当前目录下创建一个log目录,然后根据时间生成日志文件。

使用方法放到和jar包同一目录:

file

我们启动一下脚本文件:

file

启动命令:
sh app.sh start

我们已经看到他在当前目录下创建了一个log文件夹

file

我们查一下当天的日志

进入目录:
cd log
查看日志:
tail -f catalina-2019-11-14.out

file

明天会自动重新创建新的日志文件: 我们看一下昨天启动后今天生成的日志文件:

file

终、、本文就是按天分隔日志已经启动SpringBoot脚本,有什么问题可以联系我。


本文用到的插件和sheel脚本下载路径: https://download.csdn.net/download/weixin_39984161/11976655

平民访问:https://blog.cnbuilder.cn/archives/cronolog_springBoot

file

鼓励作者写出更好的技术文档,就请我喝一瓶哇哈哈哈哈哈哈哈。。你们的赞助决定我更新的速度哦!

微信:

支付宝:


感谢一路支持我的人。。。。。

Love me and hold me
QQ:69673804(16年老号)
EMAIL:itw@tom.com
友链交换
如果有兴趣和本博客交换友链的话,请按照下面的格式在评论区进行评论,我会尽快添加上你的链接。

网站名称:猿码优创
网站地址:http://blog.cnbuilder.cn
网站描述:年少是你未醒的梦话,风华是燃烬的彼岸花。
网站Logo/头像: [头像地址](https://blog.cnbuilder.cn/upload/2018/7/avatar20180720144536200.jpg)

欢迎关注猿码优创(联系小优优进内部群哦,新鲜技术优先更新):

file

 

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值