需求说明
在日常运维中,查看网站服务器访问日志是日常任务之一,如果能够编写一个脚本使日志分析更加智能化,可以减轻日常运维负担.
统计每个客户端访问apache服务器的次数
将统计信息通过字典的方式显示出来
分别统计客户端是Firefox和MSIE的访问次数
分别使用函数式编程和面向对象编程的方式实现
源代码
#导入re模块
import re
def count_path(fname,patt):
#编译模式,提升效率
cpatt=re.compile(patt)
#保存结果
result={}
with open(fname)as fobj:
for line in fobj:
#如果匹配不到,返回None
m = cpatt.search(line)
if m:
key=m.group()
#取到了返回这个值,取不到返回零,值自加1
result[key]=result.get(key,0)+1
return result
if __name__ == '__main__':
#apache日志文件
fname='/etc/httpd/logs/access_log'
#日志开头的ip地址
ip='^(\d+\.){3}\d+'
print(count_path(fname,ip))
#日志中客户端浏览器
br = 'Firefox|MSIE|Chrome'
print(count_path(fname,br))