日志文件分割:将包含不同关键字的行写入到不同的文件

实现功能:

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

例如: > 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程序。

 

原文地址:https://www.cnblogs.com/cstudio/p/2855752.html