Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >python日志解析

python日志解析

作者头像
py3study
发布于 2020-01-14 06:45:23
发布于 2020-01-14 06:45:23
55200
代码可运行
举报
文章被收录于专栏:python3python3
运行总次数:0
代码可运行

Python字典的setdefault()方法

setdefault(key[, default])

If key is in the dictionary, return its value. If not, insert key with a value of default and return default. default defaults to None.

如果键在字典中,返回这个键所对应的值。如果键不在字典中,向字典 中插入这个键,并且以default为这个键的值,并返回 default。default的默认值为None

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
>>> dict = {} 
>>> dict [ 'key' ] = 'a' 
>>>字典 
{ 'key''a' } 
>>> dict.setdefault('key''b')   #键key存在,故返回简直a。 
'一种' 
>>>字典 
{ 'key''a' } 
>>> dict.setdefault('key0''b' )  #键key0不存在,故插入此键,并以b为键值。 
'b' 
>>>字典 
{ 'key0''b''key''a' } 

日志分析

利用字典分析apache访问日志的脚本,以提取IP地址,字节数和状态

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#!/ usr / bin / env python 
“” 
用法: 
apache_log.py some_log_file 
 
该脚本使用一个命令行参数:要解析的日志文件的名称,然后解析lof文件并生成一个报告,该报告将远程主机与传输给它们的字节数相关联。 
“” 
 
导入 系统 
 
def  dictify_logline(line): 
        split_line = line.split() 
        return  { 'remote_host' :split_line [ 0 ]'status' :split_line [ 8 ]'bytes_sent' :split_line [ 9 ]} 
 
def  generate_log_report(logfile): 
        report_dict = {} 
        对于 行  中 的日志文件: 
                line_dict = dictify_logline(行) 
                打印 line_dict 
                尝试: 
                        bytes_sent = int(line_dict [ 'bytes_sent' ]) 
                除了 ValueError: 
                        继续 
                report_dict.setdefault(line_dict [ 'remote_host' ][])。append(bytes_sent) 
        返回 report_dict 
 
如果 __name__ ==  “ __main__” : 
        如果不是 len(sys.argv)>  1 :  
                打印 __doc__ 
                sys.exit(1 ) 
        infile_name = sys.argv [ 1 ] 
        尝试: 
                infile = open(infile_name,'r' ) 
        除了 ValueError: 
                打印“您必须指定要解析的有效文件”  
                sys.exit(1 ) 
        log_report = generate_log_report(infile) 
        打印 log_report 
        infile.close() 
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019/07/15 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验