您好,我正在尝试制作一个程序来为我清理一堆日志文件,但是我似乎无法获得这个简单的计数器来处理我拥有的日志文件。我对这种类型的编程还是不熟悉,但是我怀疑我可能为我的日志使用了错误类型的解析器。我以为它们是标准的Apache日志,但我一定弄错了。我附上了我的代码和日志文件的一部分,以防万一(检查IP地址)。谢谢
import apache_log_parser
parser = apache_log_parser.make_parser('%h %l %u %t "%r" %>s "%{User-agent}i"')
count = 0
with open('sad-access_log-20180902.log') as in_f:
for line in in_f:
line = parser(line)
count = count + 1
print(count)
sad-access_log-20180902.log
的内容:
********- - [26/Aug/2018:03:50:04 +0100] "GET / HTTP/1.1" 301 255
******** - - [26/Aug/2018:03:50:03 +0100] "GET /login/ HTTP/1.1" 200 5836
********* - - [26/Aug/2018:03:50:05 +0100] "GET / HTTP/1.1" 200 6812
************ - - [26/Aug/2018:03:50:11 +0100] "GET / HTTP/1.1" 200 6812
答案 0 :(得分:0)
嗨,欢迎来到StackOverflow!请记住这是您的下一个问题
也就是说,我们开始做生意。
UserAgent
字符串。解析将失败。%>s
应该解析什么? >
字符未包含在您的日志文件中此代码符合您的期望:
import apache_log_parser
parser = apache_log_parser.make_parser('%h %l %u %t "%r" %s %B')
count = 0
with open('foo.log') as in_f:
for line in in_f:
line = parser(line)
count = count + 1
print(count)
以防万一您没看过,这是apache_log_parser
到the documentation的链接。