寫了一個生成日志文件的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程序不再對原文件寫入日志,原因不詳,第三種方法是可以的。
不過,我還是覺得每天生成一個新的日志然后對前一天的日志進行挪走備份,這樣多好,,,,,,,,,,,,,,,,,,,,,,,,