zoukankan      html  css  js  c++  java
  • 日志文件分割:将包含不同关键字的行写入到不同的文件

    实现功能:

    日志文件分析,找出包含关键字的行,并写入到新的文件中;
    逐行匹配,关键字可以同时传入多个(使用“|”分割),也可以一行匹配多个关键字(使用&分割)

    例如: > analysislog java|python&2.7
    就会找出包含java的行,并写入java.log文件中;还会找出包含python并且包含2.7关键字的行,并写入python&2.7.log的文件中

     1 #-*- coding:utf8 -*-
     2 
     3 import os, sys, time
     4 
     5 
     6 def analysislog(filepath, keyword):
     7     if not os.path.exists(filepath):
     8         print "File not found !"
     9         raw_input("")
    10         sys.exit()
    11 
    12     keywordlist = keyword.split("|")
    13     fileobjlist = {}
    14     for key in keywordlist:
    15         fileobjlist[key] = open(key+".log", 'w')
    16     
    17     logfile = open(filepath, 'r')
    18     
    19     while 1:
    20         logline = logfile.readline()
    21 
    22         if logline == "":
    23             break
    24 
    25         for key in keywordlist:
    26             if key.find("&") <> -1:
    27                 andkeylist = key.split("&")
    28                 andflag = 1
    29                 for andkey in andkeylist:
    30                     if logline.find(andkey) == -1:
    31                         andflag = 0
    32                 if andflag:
    34                     fileobjlist[key].write(logline)
    35 
    36             else:
    37                 if logline.find(key) <> -1:
    39                     fileobjlist[key].write(logline)
    40     for key in keywordlist:
    41         fileobjlist[key].close()
    42 
    43 
    44     logfile.close()
    45 
    46 
    47 def appendtonewfile(logstr, newlogname):
    48     newlogfile = open(os.path.join(os.getcwd(), newlogname),"a")
    49 
    50     newlogfile.write(logstr)
    51 
    52     newlogfile.close
    53 
    54 
    55 
    56 if __name__ == "__main__":
    57     if len(sys.argv) == 1 :
    58         logfilepath = raw_input("Please input the path of the log -> ")
    59         keywords = raw_input("Please input the keywords(split by |) -> ")
    60     elif len(sys.argv) == 2 :
    61         logfilepath = sys.argv[1]
    62         keywords = raw_input("Please input the keywords(split by |) -> ")
    63     elif len(sys.argv) == 3 :
    64         logfilepath = sys.argv[1]
    65         keywords = sys.argv[2]
    66     else :
    67         print "Illegal Parameters...\n    AnalysisLog.py [logpath] [keywords] "
    68         raw_input("")
    69         sys.exit()
    70 
    71     
    72     print "Log Path: %s"%logfilepath
    73     print "Keywords: %s"%keywords.replace("|", " ")
    74     
    75     starttime = time.time()
    76     analysislog(logfilepath, keywords)
    77     endtime = time.time()
    78     print "Time used: ",(endtime - starttime)," s"
    79         
    80         

    PS: 可以使用 pyinstall 打包成exe程序。

     

  • 相关阅读:
    ASP.NET Core 搭配 Nginx 的真实IP问题
    【Spark】Sparkstreaming-性能调优
    【软件】软件设计-非功能性需求-性能-可靠性-安全性等
    【Spark】Spark-架构
    【Kafka】Kafka-副本-分区设置-性能调优
    【Spark】SparkStreaming-Tasks-数量如何设置?
    【Spark】Spark-性能调优-系列文章
    【Spark】Spark-空RDD判断与处理
    【Git】Git-add之后-忽略部分文件的方法
    【大数据】Spark-Hadoop-架构对比
  • 原文地址:https://www.cnblogs.com/cstudio/p/2855752.html
Copyright © 2011-2022 走看看