linux根據時間段對日志文件進行,匹配,備份日志,並刪除


寫了一個生成日志文件的shell腳本和python腳本,供測試使用

Shell腳本內容

#!/bin/bash
mdate=`date +%Y-%m-%d-%H:%M:%S`
LogFile=/home/test/han/a.log
for((i=1;i<=100;i++));  
do   
echo  $mdate disk is good!   $i      >> $LogFile
sleep 2s 
done


生成的日志文件格式內容為
2020-12-24-17:35:02 disk is good! 1
2020-12-24-17:35:02 disk is good! 2
2020-12-24-17:35:02 disk is good! 3
2020-12-24-17:35:02 disk is good! 4
2020-12-24-17:35:02 disk is good! 5

 Python內容

import logging
import time
def something():
    for i in range(1,100):
        time.sleep(2)
        logging.basicConfig(level=logging.INFO,filename='new.log',filemode='a', format='%(asctime)s - %(name)s - %(levelname)s - %(message)s')
        logging.info(u"print %s" %i)
something()


生成日志文件格式內容為
2020-12-23 14:57:53,803 - root - INFO - print 1
2020-12-23 14:57:55,805 - root - INFO - print 2
2020-12-23 14:57:57,809 - root - INFO - print 3
2020-12-23 14:57:59,811 - root - INFO - print 4
2020-12-23 14:58:01,814 - root - INFO - print 5
2020-12-23 14:58:03,817 - root - INFO - print 6
2020-12-23 14:58:05,821 - root - INFO - print 7
2020-12-23 14:58:07,824 - root - INFO - print 8

 根據時間段對日志文件進行匹配,備份,再刪除原文件備份的內容,同時還要保持python程序往日志里面不間斷的寫入

#!/bin/bash
cd $(dirname $0)

#匹配當天的日志並刪除
#sed -n "/^$(date +%Y-%m-%d)/,/^$(date +%Y-%m-%d)/p" test.log > ./log/b.log && sed -i "/^$(date +%Y-%m-%d)/d" test.log

#匹配前一天的日志
#sed -n "/^$(date +%Y-%m-%d -d '-1 days')/,/^$(date +%Y-%m-%d -d'-1 days')/p" test.log > ./log/test_$(date +%Y-%m-%d -d '-1 days').log

#匹配前一天的日志第二種方法
awk -v a=`date +%Y-%m-%d -d "-1 days"` '{if($1==a) print $0}' test.log >> ./log/test2_$(date +%Y-%m-%d -d '-1 days').log &&  \
sed -i "/^$(date +%Y-%m-%d -d '-1 days')/d" test.log

#匹配前一天的日志第三種方法,先備份,再全部清空
cp ventilator.log ./log/ventilator_$(date +%Y-%m-%d -d '-1 days').log && echo -n "" > test.log

 最后選用的第三種方法,原因是前兩種刪除原文件前一天的日志之后,python程序不再對原文件寫入日志,原因不詳,第三種方法是可以的。

不過,我還是覺得每天生成一個新的日志然后對前一天的日志進行挪走備份,這樣多好,,,,,,,,,,,,,,,,,,,,,,,,


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM