随笔 - 13, 文章 - 0, 评论 - 7, 阅读 - 14890

导航

< 2025年1月 >
29 30 31 1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31 1
2 3 4 5 6 7 8

实现功能:

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

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

 

 

 

编辑推荐:
· 智能桌面机器人:用.NET IoT库控制舵机并多方法播放表情
· Linux glibc自带哈希表的用例及性能测试
· 深入理解 Mybatis 分库分表执行原理
· 如何打造一个高并发系统?
· .NET Core GC压缩(compact_phase)底层原理浅谈
阅读排行:
· 手把手教你在本地部署DeepSeek R1,搭建web-ui ,建议收藏!
· 新年开篇:在本地部署DeepSeek大模型实现联网增强的AI应用
· Janus Pro:DeepSeek 开源革新,多模态 AI 的未来
· 互联网不景气了那就玩玩嵌入式吧,用纯.NET开发并制作一个智能桌面机器人(三):用.NET IoT库
· 【非技术】说说2024年我都干了些啥
点击右上角即可分享
微信分享提示