对于日志,logback支持滚动压缩文件,保留一定时间的历史文件,但不能保证保留最近7天的.log文件,压缩最近30天的日志文件,所以日志是这里通过shell命令和crontab实现文件定时压缩和清除autoZip.sh首先,我们的日志文件命名规则是*.%d{yyyy-MM-dd}.log,通过docker挂载到本地目录进行集中存储,规则是/data/logs/*/*.log其中日志是每个服务的目录#!/bin/bashfunctiontarOrClear(){point=`date-d'-7day'+%s`point2=`date-d'-30day'+%s`root=$1dirs=`ls-F|grep/$`foriin$dirs;doecho"=========cd$root/$i"cd$root/$ifiles=`ls`forfileNamein$files;doprefix=${fileName%%.*}day=$(expr"$fileName":'.*\([0-9]\{4\}\-[0-9]\{2\}-[0-9]\{2\}\).*')if[[$day!=""]];thendayTime=`date-d$day+%s`#30天If[[$dayTime-lt$point2]];thenecho"rm$fileName"rm$fileName#7天以外的日志压缩tar.gz,删除原日志文件elif[[$dayTime-lt$point]];thenif[[$fileName==*.log]]&&[[!-a$prefix.$day.tar.gz]];然后echo"tar-czf$prefix.$day.tar.gz$fileName--remove-files"tar-czf$prefix.$day.tar.gz$fileName--remove-filesfififidonedone}if[[$#==1]];thentarOrClear$1elseecho"请选择日志文件的根目录,日志文件位于根目录/*/*.log"fcrontab定时任务crontab-e进入定时任务编辑器,添加一行01***(sh/data/logs/autoZip.sh/data/logs)>/data/logs/console.log保存并退出crontab-l查看定时任务列表是否更新,这样每天01:00,服务器会自动执行autoZip.sh到/data/logs/*/*.log日志文件被压缩和清理
