【14】Appium进阶篇-日志模块

一、日志收集概述

  日志级别:

级别

何时使用

DEBUG

调试信息,也是最详细的日志信息。

INFO

证明事情按预期工作。

WARNING

表明发生了一些意外,或者不久的将来会发生问题(如‘磁盘满了’)。软件还是在正常工作。

ERROR

由于更严重的问题,软件已不能执行一些功能了。

CRITICAL

严重错误,表明软件已不能继续运行了。

  日志格式:日志一般采用 时间+模块+行数+日志具体信息 的内容格式

二、Logging模块简介与应用

  logging的构成:logging模块包括logger,Handler,Filter,Formatter四个部分。          

          Logger 记录器,用于设置日志采集。
          Handler 处理器,将日志记录发送至合适的路径。
          Filter 过滤器,提供了更好的粒度控制,它可以决定输出哪些日志记录。
          Formatter 格式化器,指明了最终输出中日志的格式

  logger记录器:basicConfig(**kwargs) 为日志记录系统做基本配置

         部分参数简介
              filename 指定日志文件名称
              filemode 指定打开文件的模式,如果指定了filename(如果文件模式未指定,则默认为'a)
                  Tips:文件读写模式
                      w 以写方式打开,
                      W 文件若存在,首先要清空,然后(重新)创建
                      a 以追加模式打开 (从 EOF 开始, 必要时创建新文件)
                      r+ 以读写模式打开
                      w+ 以读写模式打开 (参见 w )
                      a+ 以读写模式打开 (参见 a )
              format 为处理程序使用指定的格式字符串。
              datefmt 使用指定的日期/时间格式。样式如果指定了格式字符串,则使用它来指定 格式字符串的类型.
              level 将根记录器级别设置为指定级别。
              Handler 处理器:Handler 处理器,将日志记录发送至合适的路径,Handler处理器类型有很多种,比较常用的有三个:
                  1.StreamHandler:将日志记录输出发送到诸如sys.stdout,sys.stderr或任何类似文件流的对象。上面例子就是输出到控制台
                  2.FileHandler:将日志记录输出发送到磁盘文件。 它继承了StreamHandler的输出功能。logging.basicConfig(filename='runlog.log',level=logging.DEBUG)

                  3.NullHandler:不做任何格式化或输出。 它本质上是一个开发人员使用的“无操作”处理程序。
              Filter 过滤器  Handlers和Loggers可以使用Filters来完成比级别更复杂的过滤。
              Formatter使用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

打印日志信息

# coding:utf-8
import logging

#设置日志格式,名称
logging.basicConfig(level=logging.INFO,filename='infolog.log',
                    format='%(asctime)s %(filename)s[line:%(lineno)d]%(levelname)s%(message)s')


logging.debug('debug-info')
logging.info('INFO')
logging.warning("warning_info")
logging.error("error_info")
logging.critical("critical_info")

三、Logging配置文件管理

  多模块日志配置格式

[loggers]
keys=root,infoLogger

[logger_root]
level=DEBUG     #日志等级
handlers=consoleHandler,fileHandler     #控制台和文件都记录

[logger_infoLogger]
handlers=consoleHandler,fileHandler
qualname=infoLogger
propagate=0

[handlers]
keys=consoleHandler,fileHandler

[handler_consoleHandler]
class=StreamHandler
level=INFO
formatter=form02
args=(sys.stdout,)

[handler_fileHandler]
class=FileHandler
level=INFO
formatter=form01
args=('runlog.log', 'a')        #日志输出文件路径

[formatters]
keys=form01,form02

[formatter_form01]
format=%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s

[formatter_form02]
format=%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s
import logging
import logging.config

#调用方法如下
CON_LOG='log.conf'    #配置日志文件的名称
logging.config.fileConfig(CON_LOG)
logging=logging.getLogger()
原文地址:https://www.cnblogs.com/qingbaobei7370/p/12420705.html