Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python apache日志解析器不支持';我不能处理我的日志文件_Python - Fatal编程技术网

Python apache日志解析器不支持';我不能处理我的日志文件

Python apache日志解析器不支持';我不能处理我的日志文件,python,Python,嗨,我正试图制定一个计划,将为我清理一堆日志文件,但我似乎无法让这个简单的计数器与我的日志文件工作。我对这种类型的编程还是新手,但我怀疑我可能使用了错误类型的解析器来处理我的日志。我以为它们是标准的apache日志,但我一定弄错了。我已经附上了我的代码和日志文件的一部分,以防有帮助(IP地址被审查)。谢谢 sad-access\U log-20180902.log的内容 ********- - [26/Aug/2018:03:50:04 +0100] "GET / HTTP/1.1" 301 2

嗨,我正试图制定一个计划,将为我清理一堆日志文件,但我似乎无法让这个简单的计数器与我的日志文件工作。我对这种类型的编程还是新手,但我怀疑我可能使用了错误类型的解析器来处理我的日志。我以为它们是标准的apache日志,但我一定弄错了。我已经附上了我的代码和日志文件的一部分,以防有帮助(IP地址被审查)。谢谢

sad-access\U 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

嗨,欢迎来到StackOverflow!下一个问题请记住这一点

  • 将您遇到的所有相关错误消息都包括在内,这被认为是本网站的良好做法
  • 你输入了代码和数据-太棒了!但是,您的代码格式不正确,这很糟糕,因为Python的缩进非常易变
也就是说,让我们开始谈正事吧

  • 您的日志文件不包含
    UserAgent
    -string。解析将失败
  • %>s
    应该解析什么?日志文件中不包含
    字符
  • 正如我提到的,日志中的最后一个字段不是UA;相反,它似乎更可能是响应的大小,所以我只使用了格式字符串
此代码符合您的预期:

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)

以防万一您没有读到,这是指向for
apache\u log\u parser

欢迎,它看起来不像
PHP
。那么到底是什么问题呢?只是好奇我的回答是否有助于您解决这个问题!如果是的话,我很高兴你能把答案标记为接受。如果没有,也许我们可以进一步帮助你
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)