zoukankan      html  css  js  c++  java
  • 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程序不再对原文件写入日志,原因不详,第三种方法是可以的。

    不过,我还是觉得每天生成一个新的日志然后对前一天的日志进行挪走备份,这样多好,,,,,,,,,,,,,,,,,,,,,,,,

  • 相关阅读:
    linux系统下MySQL表名区分大小写问题
    linux下查看Mysql默认编码、修改默认编码
    mysql的下载及安装(windows)
    数据库进阶
    mysql练习
    数据库基础
    jQuery
    JavaScript 基础学习(二)
    344.Reverse String
    计蒜客课程数据结构(顺序表)
  • 原文地址:https://www.cnblogs.com/hanjianfei/p/14185419.html
Copyright © 2011-2022 走看看