文档章节

linux nginx与tomcat或log4j日志备份压缩清理脚本

 成智
发布于 2017/07/25 23:44
字数 460
阅读 63
收藏 0

此脚本为nginx日志的处理,如为tomcat或log4j 则修改日志日期格式与日志文件后缀名

#!/bin/sh
#########nginx日志处理#############
#chmod u+x /software/nginx/nginx/nginxLogHandle.sh
#sh /software/nginx/nginx/nginxLogHandle.sh
#crontab -e   加入定时任务
#每天凌晨1点开始执行,丢弃执行输出
#   0 1 * * *  sh /software/nginx/nginx/nginxLogHandle.sh > /dev/null 2>&1
#cat /software/nginx/nginx/logsBak/0_HandleLog.txt


#定义变量开始
#压缩备份前一天到前多少天的日志
zipLogDayNum=20
#删除多少天前的日志
delLogDayNum=30
#日志目录
nginxLogPath="/software/nginx/nginx/logs"
#日志备份目录
nginxLogBackPath="/software/nginx/nginx/logsBak"
#脚本执行日志记录路径
nginxLogFindFilePath="/software/nginx/nginx/logsBak"
nginxLogZipFileName="$nginxLogFindFilePath/0_findZipHandle.txt"
nginxLogDelFileName="$nginxLogFindFilePath/0_findDelHandle.txt"
#脚本执行日志记录
nginxLogHandleFileName="$nginxLogFindFilePath/0_HandleLog.txt"
#定义变量结束


echo "#################################################" >> $nginxLogHandleFileName
echo "############## nginx日志处理 ###################" >> $nginxLogHandleFileName
echo "######################" $(date +"%Y-%m-%d %H:%M:%S:%N") "###########################" >> $nginxLogHandleFileName
echo "#################################################" >> $nginxLogHandleFileName

echo "####zipLogDayNum###" $zipLogDayNum >> $nginxLogHandleFileName
echo "####delLogDayNum###" $delLogDayNum >> $nginxLogHandleFileName
echo "####nginxLogPath###" $nginxLogPath >> $nginxLogHandleFileName
echo "####nginxLogBackPath###" $nginxLogBackPath >> $nginxLogHandleFileName
echo "####nginxLogZipFileName###" $nginxLogZipFileName >> $nginxLogHandleFileName
echo "####nginxLogDelFileName###" $nginxLogDelFileName >> $nginxLogHandleFileName

#检查备份目录是否存在
if [ ! -x "$nginxLogBackPath" ]
then {  
	mkdir $nginxLogBackPath
} 
fi  

#检查文件记录目录是否存在
if [ ! -x "$nginxLogFindFilePath" ]
then {  
	mkdir $nginxLogFindFilePath
} 
fi  

#清空查找记录文件
if [ -f "$nginxLogZipFileName" ]
then {	
	rm -rf $nginxLogZipFileName
}
fi

if [ -f "$nginxLogDelFileName" ]
then {	
	rm -rf $nginxLogDelFileName
}
fi

#查找符合条件的文件放入txt
for ((num=1; num<$zipLogDayNum; ++num))
do  
	logDateStr=$(date -d-$num' day' +"%Y%m%d")
	find $nginxLogPath -name "*.log-$logDateStr" >> $nginxLogZipFileName
done 

#循环查找到文件
cat $nginxLogZipFileName | while read findRow
do
    echo $(date +"%Y-%m-%d %H:%M:%S:%N") "####压缩文件并删除###" $findRow >> $nginxLogHandleFileName
    findFileName=$(basename $findRow)
	#echo "$findFileName.tar.gz"
   tar -zcf $nginxLogBackPath/$findFileName.tar.gz $findRow
	rm -rf $findRow
done

##删除文件
for ((num=$delLogDayNum; num<$delLogDayNum+10; ++num))
do  
	logDateStr=$(date -d-$num' day' +"%Y%m%d")
	find $nginxLogBackPath -name "*.log-$logDateStr.tar.gz" >> $nginxLogDelFileName
done 

cat $nginxLogDelFileName | while read findRow
do 
	echo $(date +"%Y-%m-%d %H:%M:%S:%N") "####删除备份###" $findRow >> $nginxLogHandleFileName
	rm -rf $findRow
done



echo "#################################################" >> $nginxLogHandleFileName
echo "######################" $(date +"%Y-%m-%d %H:%M:%S:%N") "###########################" >> $nginxLogHandleFileName
echo "#################################################" >> $nginxLogHandleFileName
echo "" >> $nginxLogHandleFileName
echo "" >> $nginxLogHandleFileName
echo "" >> $nginxLogHandleFileName

 

© 著作权归作者所有

粉丝 0
博文 19
码字总数 3247
作品 0
广州
程序员
私信 提问
log4j及log4j2在Spring MVC中的使用.md

项目已上线许久,项目中使用的是log4j 1.x版本,本来日志也可以正常记录,但是运维报怨说,你们的日志太大了,catalina.out日志输出无限大,以致有些应用出现服务器存储告警,所以建议我们:...

混迹在Amoy
2018/07/28
0
0
log4j和logback的冲突导致日志输出异常

前一阵在在项目中碰到一个日志问题。工程使用的是log4j,log4j.xml中也配置了工程日志路径和策略,并把日志级别定为warn。但不管是测试环境还是线上环境,都发现除了应用自身的日志,以及指定...

精神病的羽毛球
2014/11/15
4.2K
0
tomcat8用log4j配置日志 解决日志过大问题

不想给linux安装插件切割,只想tomcat解决 官方文档参考:https://tomcat.apache.org/tomcat-8.0-doc/logging.html 上面链接有说明怎么用 下方为使用方法找到你的tomcat对应版本 下载地址为:ht...

stevenliu
07/25
21
0
Log4j向logback迁移

一、项目中大多用的都是Log4j做的,而此次迁移到logback有如下理由: 1、logback是log4j团队新作,重写了内部实现,在速度得到提升的同时,占用更少的内存; 2、log4j与logback都是slf4j抽象...

Bingo许
2017/05/05
68
0
Log4j 2.5 发布,Java 日志组件

Log4j 2.5 发布,此版本是第九个 GA 版本,包括一些 bug 修复和新特性。新特性包括在 file rollover 的时候指定删除操作;一个基于 CRON 的触发策略;过滤器支持 JSR 223 脚本,模式选择器和...

oschina
2015/12/12
3.9K
2

没有更多内容

加载失败,请刷新页面

加载更多

总结

一、设计模式 简单工厂:一个简单而且比较杂的工厂,可以创建任何对象给你 复杂工厂:先创建一种基础类型的工厂接口,然后各自集成实现这个接口,但是每个工厂都是这个基础类的扩展分类,spr...

BobwithB
27分钟前
2
0
java内存模型

前言 Java作为一种面向对象的,跨平台语言,其对象、内存等一直是比较难的知识点。而且很多概念的名称看起来又那么相似,很多人会傻傻分不清楚。比如本文我们要讨论的JVM内存结构、Java内存模...

ls_cherish
30分钟前
2
0
友元函数强制转换

友元函数强制转换 p522

天王盖地虎626
昨天
5
0
js中实现页面跳转(返回前一页、后一页)

本文转载于:专业的前端网站➸js中实现页面跳转(返回前一页、后一页) 一:JS 重载页面,本地刷新,返回上一页 复制代码代码如下: <a href="javascript:history.go(-1)">返回上一页</a> <a h...

前端老手
昨天
5
0
JAVA 利用时间戳来判断TOKEN是否过期

import java.time.Instant;import java.time.LocalDateTime;import java.time.ZoneId;import java.time.ZoneOffset;import java.time.format.DateTimeFormatter;/** * @descri......

huangkejie
昨天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部