python自动化测试添加日志_python自动化测试学习笔记-9python的日志模块

参考

logging模块,用来处理python中的日志;

import logging

logging.debug('debug')

logging.info('info')

logging.warning('warning')

logging.error('error')

logging.critical('critical')

执行查看结果:

可见,默认情况下python的logging模块将日志打印到了标准输出中,且只显示了大于等于WARNING级别的日志,这说明默认的日志级别设置为WARNING(日志级别等级CRITICAL > ERROR > WARNING > INFO > DEBUG > NOTSET),默认的日志格式为日志级别:Logger名称:用户输出消息。

import logging

logging.basicConfig(level=logging.DEBUG,filename='2018log.log',filemode='a',format='%(asctime)s - %(pathname)s[line:%(lineno)d] - %(levelname)s: %(message)s')

logging.debug('我的debug信息')

logging.info('我的info信息')

logging.warning('我的warning信息')

logging.error('我的error信息')

logging.critical('我的critical信息')

执行查看结果:生成了2018log.log文件

logging.basicConfig()函数中可通过具体参数来更改logging模块默认行为,可用参数有

filename:用指定的文件名创建FiledHandler(后边会具体讲解handler的概念),这样日志会被存储在指定的文件中。

filemode:文件打开方式,在指定了filename时使用这个参数,默认值为“a”还可指定为“w”。

format:指定handler使用的日志显示格式。

datefmt:指定日期时间格式。

level:设置rootlogger的日志级别

stream:用指定的stream创建StreamHandler。可以指定输出到sys.stderr,sys.stdout或者文件,默认为sys.stderr。若同时列出了filename和stream两个参数,则stream参数会被忽略。

import logging

import sys

logging.basicConfig(level=logging.DEBUG,stream=sys.stderr,filemode='a',format='%(asctime)s - %(pathname)s[line:%(lineno)d] - %(levelname)s: %(message)s')

logging.debug('我的debug信息')

logging.info('我的info信息')

logging.warning('我的warning信息')

logging.error('我的error信息')

logging.critical('我的critical信息')

执行查看结果:

logging库提供了多个组件:Logger、Handler、Filter、Formatter。

Loggers 暴露了应用程序代码可以直接使用的接口

Handlers 发送日志记录(由 loggers 创建)到合适的目的地

Filters 提供了细粒度的方法来决定哪些日志记录需要被输出

Formatters 指定了在最终输出时,日志记录的布局格式

Logger

Logger是一个树形层级结构,输出信息之前都要获得一个Logger(如果没有显示的获取则自动创建并使用root Logger,如第一个例子所示)。

logger = logging.getLogger()返回一个默认的Logger也即root Logger,并应用默认的日志级别、Handler和Formatter设置。

当然也可以通过Logger.setLevel(lel)指定最低的日志级别,可用的日志级别有logging.DEBUG、logging.INFO、logging.WARNING、logging.ERROR、logging.CRITICAL。

Logger.debug()、Logger.info()、Logger.warning()、Logger.error()、Logger.critical()输出不同级别的日志,只有日志等级大于或等于设置的日志级别的日志才会被输出。

定义:logger = logging.getLogger(__name__)

Handler

Handler对象负责发送相关的信息到指定目的地,有几个常用的Handler方法:

Handler.setLevel(lel):指定日志级别,低于lel级别的日志将被忽略

Handler.setFormatter():给这个handler选择一个Formatter

Handler.addFilter(filt)、Handler.removeFilter(filt):新增或删除一个filter对象

可以通过addHandler()方法为Logger添加多个Handler:

有多种可用的Handler:

logging.StreamHandler 可以向类似与sys.stdout或者sys.stderr的任何文件对象(file object)输出信息

logging.FileHandler 用于向一个文件输出日志信息

logging.handlers.RotatingFileHandler 类似于上面的FileHandler,但是它可以管理文件大小。当文件达到一定大小之后,它会自动将当前日志文件改名,然后创建一个新的同名日志文件继续输出

logging.handlers.TimedRotatingFileHandler 和RotatingFileHandler类似,不过,它没有通过判断文件大小来决定何时重新创建日志文件,而是间隔一定时间就自动创建新的日志文件

logging.handlers.SocketHandler 使用TCP协议,将日志信息发送到网络。

logging.handlers.DatagramHandler 使用UDP协议,将日志信息发送到网络。

logging.handlers.SysLogHandler 日志输出到syslog

logging.handlers.NTEventLogHandler 远程输出日志到Windows NT/2000/XP的事件日志

logging.handlers.SMTPHandler 远程输出日志到邮件地址

logging.handlers.MemoryHandler 日志输出到内存中的制定buffer

logging.handlers.HTTPHandler 通过"GET"或"POST"远程输出到HTTP服务器

各个Handler的具体用法可查看参考书册:

https://docs.python.org/2/library/logging.handlers.html#module-logging.handlers

Formatter

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

Filter

限制只有满足过滤规则的日志才会输出。

比如我们定义了filter = logging.Filter('a.b.c'),并将这个Filter添加到了一个Handler上,则使用该Handler的Logger中只有名字带a.b.c前缀的Logger才能输出其日志。

filter = logging.Filter('a.b.c')

fh.addFilter(filter)

logger.addFilter(filter)

多模块使用logging

logging模块保证在同一个python解释器内,多次调用logging.getLogger('log_name')都会返回同一个logger实例,即使是在多个模块的情况下。所以典型的多模块场景下使用logging的方式是在main模块中配置logging,这个配置会作用于多个的子模块,然后在其他模块中直接通过getLogger获取Logger对象即可。

示例:

import logging

from logging import handlers

#获取logger

logger=logging.getLogger('TestLog')

#设置logger级别

logger.setLevel(logging.INFO)

#设置logger格式

format_str=logging.Formatter('%(asctime)s - %(pathname)s[line:%(lineno)d] - %(levelname)s: %(message)s')

#输出到控制台

st=logging.StreamHandler()

st.setFormatter(format_str)

#输出到文件

th=handlers.TimedRotatingFileHandler('Testlog.log',when='h',interval=2,encoding='utf-8')

th.setFormatter(format_str)

#添加到handler

logger.addHandler(st)

logger.addHandler(th)

logger.debug('debug')

logger.info('info')

logger.warning('warning')

logger.error('error')

logger.critical('critical')

执行查看结果:

查看生成的日志文件:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python学习笔记》是由皮大庆编写的一本关于Python语言学习的教材。在这本书中,作者详细介绍了Python语言的基础知识、语法规则以及常用的编程技巧。 首先,作者简要介绍了Python语言的特点和优势。他提到,Python是一种易于学习和使用的编程语言,受到了广大程序员的喜爱。Python具有简洁、清晰的语法结构,使得代码可读性极高,同时也提供了丰富的库和模块,能够快速实现各种功能。 接着,作者详细讲解了Python的基本语法。他从变量、数据类型、运算符等基础知识开始,逐步介绍了条件语句、循环控制、函数、模块等高级概念。同时,作者通过大量的示例代码和实践案例,帮助读者加深对Python编程的理解和应用。 在书中,作者还特别强调了编写规范和良好的编程习惯。他从命名规范、注释风格、代码缩进等方面指导读者如何写出清晰、可读性强的Python代码。作者认为,良好的编程习惯对于提高代码质量和提高工作效率非常重要。 此外,作者还介绍了Python的常用库和模块。他提到了一些常用的库,如Numpy、Pandas、Matplotlib等。这些库在数据处理、科学计算、可视化等领域有广泛的应用,帮助读者更好地解决实际问题。 总的来说,《Python学习笔记》是一本非常实用和全面的Python学习教材。通过学习这本书,读者可以系统地学习和掌握Python编程的基础知识和高级应用技巧,为以后的编程学习和工作打下坚实的基础。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值