好久好久没更新文章了,感觉自己都比较懒散了。。。事也多,也不知道想给大家分享什么。
今天这个事我觉得可以给大家分享一下。故事开始:
leader:你帮我找一下昨天的短信发送异常的日志。
小优优:好嘞。
小优优:小优优把昨天同事给小优优发的图片直接给了Leader。
leader:我要文本的。
小优优:好的,我从服务器给拉一下。
默默打开打开服务器,一看日志文件 26kb,就剩今天重启后生成的日志。
呵呵呵呵呵呵呵呵呵呵呵,MD 日志没了。。。
一想到leader的脸:怕了怕了。。。。
幸好有服务器备份的jar包重新跑一下吧。麻蛋、、测试环境没问题。。。还得到生成环境跑一下有问题的jar包,复制文本给他。呕吼。彻底完犊子喽。。
最后用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
小伙伴你们看到有没有什么区别,貌似看不出来:>>两个箭头是追加。
这样一改启动可以追加日志了。
这样改完之后是可以正常追加日志了,但是如果访问量上来了,日志太多了,追查某一天的日志肿么办?
后来我们用到了新的方案:利用cronolog插件(日志切割工具)按天分隔日志。 二话不说来安装cronolog
第一步:先创建cronolog文件目录
进入/DATA/目录,可以存放任意目录。
cd /DATA/
//创建cronolog文件目录
mkdir cronolog
第二步上传cronlog文件:
cronolog文件下载路径: https://pan.baidu.com/s/1Sjx9-2_xgptQsex6qmO2Vg 提取码: qw2w
第三步:解压文件:
解压文件:
tar -zxvf cronolog-1.6.2.tar.gz
解压结果:
第四步:安装cronolog
4.1、进入cronolog-1.6.2目录
命令:
cd cronolog-1.6.2
4.2执行./configure
命令:
./configure
4.3执行安装
命令:
make & make install
第五步:查询是否安装成功
查看cronolog安装后所在目录(验证安装是否成功)
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包同一目录:
我们启动一下脚本文件:
启动命令:
sh app.sh start
我们已经看到他在当前目录下创建了一个log文件夹
我们查一下当天的日志
进入目录:
cd log
查看日志:
tail -f catalina-2019-11-14.out
明天会自动重新创建新的日志文件: 我们看一下昨天启动后今天生成的日志文件:
终、、本文就是按天分隔日志已经启动SpringBoot脚本,有什么问题可以联系我。
本文用到的插件和shell脚本下载路径: https://pan.baidu.com/s/1PcEXJd4B5HNBVNrLabbLOg 提取码: 5ybe