Python的logging模块提供了通用的日志系统,这个模块提供不同的日志级别,并可以采用不同的方式记录日志,比如文件,HTTP GET/POST,SMTP,Socket等,甚至可以自己实现方式记录日志。

logging模块包括logger,Handler,Filter,Formatter四个部分。

  Logger 记录器,用于设置日志采集。

  Handler 处理器,将日志记录发送至合适的路径。

  Filter 过滤器,提供了更好的粒度控制,它可以决定输出哪些日志记录。

  Formatter 格式化器,指明了最终输出中日志的格式。

日志格式:

日志格式化是为了提高日志的可阅读性,比如:时间+模块+行数+日志具体信息 的内容格式。如果日志信息杂乱无章的全部输出来,这样也不利于定位问题。如下所示就是日志格式化输出,非常便于阅读查看。

2019-09-10 11:18:46,531 - test_suit01_denglu.py[line20] - INFO - Log
2019-09-10 11:18:49,360 - web_func.py[line34] - INFO - 启动浏览器
2019-09-10 11:18:52,566 - web_func.py[line114] - INFO - 等待时长: 10S
2019-09-10 11:18:52,567 - web_func.py[line46] - INFO - 打开地址: http://fwspre.cnzhonglunnet.com/ui/login.html#/
2019-09-10 11:18:52,633 - web_func.py[line67] - INFO - 点击元素: ('xpath', "//div[@id='root']/div/div[2]/form/div/div/div/div/div/div/div/div[2]")
2019-09-10 11:18:53,276 - web_func.py[line77] - INFO - 在('xpath', ".//*[@id='serverid']/span/input")位置输入文本:900005
2019-09-10 11:18:54,370 - web_func.py[line77] - INFO - 在('xpath', ".//*[@id='username']/span/input")位置输入文本:1001
2019-09-10 11:18:54,479 - web_func.py[line77] - INFO - 在('xpath', ".//*[@id='password2']/span/input")位置输入文本:111111
2019-09-10 11:18:54,554 - web_func.py[line67] - INFO - 点击元素: ('xpath', "//button[@type='submit']")
2019-09-10 11:18:58,666 - web_func.py[line84] - INFO - 退出浏览器

使用Formatter对象设置日志信息最后的规则、结构和内容,默认的时间格式为%Y-%m-%d %H:%M:%S。

    格式                       描述
%(levelno)s 打印日志级别的数值
%(levelname)s   打印日志级别名称
%(pathname)s   打印当前执行程序的路径
%(filename)s   打印当前执行程序名称
%(funcName)s   打印日志的当前函数
%(lineno)d 打印日志的当前行号
%(asctime)s    打印日志的时间
%(thread)d    打印线程id
%(threadName)s 打印线程名称
%(process)d    打印进程ID
%(message)s    打印日志信息

使用方法:

formatter = logging.Formatter('%(asctime)s - %(filename)s[line%(lineno)d] - %(levelname)s - %(message)s')

输出结果即是上面格式的日志。

最新文章

  1. ansible 小试
  2. 汽车ABS系统-第一周作业
  3. javascript 随笔
  4. [转]PYTHON-SCRAPY-WINDOWS下的安装笔记
  5. lamp.phpstudy.net
  6. Java并发编程-总纲
  7. [CSS]visibility 属性
  8. Android系统默认Home应用程序(Launcher)的启动过程源码分析
  9. Tree(未解决。。。)
  10. 使用命令行的方式操作hdfs
  11. Redis基本数据结构总结之STRING和LIST
  12. Gym101522A Gym101522C Gym101522D
  13. linux中syscall调用号查看
  14. 通过JQuery的$.ajax()把 json 数据 post 给 PHP
  15. javasrcipt的作用域和闭包(二)续篇之:函数内部提升机制与Variable Object
  16. 检索COM类工厂中CLSID为{10020100-E260-11CF-AE68-00AA004A34D5}的组件时失败,原因是出现以下错误:80040154
  17. 12C配置EM Express的https端口
  18. 纯手写SpringMVC到SpringBoot框架项目实战
  19. django 初始化 介绍 生命周期
  20. Code Signal_练习题_depositProfit

热门文章

  1. delphi之猥琐的webserver实现
  2. servlet--禁用浏览器缓存
  3. java8新特性-简介
  4. resultType和resultMap一对一查询小结
  5. Codeforces 1105D (BFS)
  6. Codeforces 375D D. Tree and Queries
  7. C# form 传参数的几个方法
  8. JS高级 — 函数中的this指向问题
  9. XMPP即时通讯协议使用(七)——利用Strophe实现WebIM及strophe.plugins插件使用
  10. R语言控制流