• 是程序产生的日志
  • 程序员自定义设置的
  • 收集器和渠道级别那个高就以那个级别输出
  • 日志和报告的作用:
    • 报告的重点在于执行结果(执行成功失败,多少用例覆盖),返回结果  
    • 日志的重点在执行过程当中,异常点,哪里失败,哪里报错,诊断代码  

logging 模块的基本使用

import logging  # Python内置的日志模块

# 1. 定义日志收集器,使用.getLogger方法,收集器的名字case
case_logger = logging.getLogger("case") # 会创建一个Logger对象 # 2. 指定日志收集器的日志等级,使用logging对象中.setLevel方法
# NOTSET(0), DEBUG(10), INFO(20)--, WARNING(30), ERROR(40), CRITICAL(50) # 方法一 setLevel(赛特。莱欧)
# case_logger.setLevel(logging.DEBUG) # 只能收集当前等级和当前等级以上级别的日志
# 方法二 setLevel(赛特。莱欧)
case_logger.setLevel("DEBUG") # 3. 定义日志输出渠道
# 输出到控制台,使用logging(老根)当中的.StreamHandler(丝锥木汗都)
console_handle = logging.StreamHandler() # Handler对象 # 输出到文件,使用logging(老根)当中的.FileHandler(发偶。憨豆)方法,(指定文件名, 默认a以追加的方式,)
file_handle = logging.FileHandler("cases.log", encoding="utf-8") # 4. 指定日志输出渠道的日志等级,使用对象.setLevel(赛特。莱欧)方法
console_handle.setLevel(logging.ERROR)
file_handle.setLevel(logging.INFO) # 5. 定义日志显示的格式,logging(老根)当中的 Formatter(佛梅特) 函数
# 简单点的格式
simple_formatter = logging.Formatter('%(asctime)s - [%(levelname)s] - [msg]: %(message)s')
# 详细的格式
verbose_formatter = logging.Formatter('%(asctime)s - [%(levelname)s] - [msg]: %(message)s - %(name)s - %(lineno)d') # 控制台显示简洁的日志,setFormatter(赛特否梅特)函数
console_handle.setFormatter(simple_formatter)
# 日志文件中显示详细日志
file_handle.setFormatter(verbose_formatter) # 6. 对接, 将日志收集器与输出渠道对接,收集器中addHandler(按得,憨豆)函数
case_logger.addHandler(console_handle)
case_logger.addHandler(file_handle)

日志等级

  • NOTSET(0):(译:闹特赛特):相当没级别
  • DEBUG(10):(译:滴bug):在调试阶段,业务系统还没有上线
  • INFO(20):(译:in否):正常的提示信息,普通的提示信息
  • WARNING(30):(译:外流):警告,没有错,不会导致系统中断,程序正常进行,会出现某个警告
  • ERROR(40):(译:哎歪):系统出现错误,影响系统功能
  • CRITICAL(50):(译:快特扣):最严重的的错误,会导致程序中断

日志显示的格式

  • %(asctime)s :显示时间
  • %(created)f:创建日期
  • %(filename)s : 日志的名称
  • %(funcName)s : 函数的名称
  • %(levelname)s : 日志等级
  • %(levelno)s:日志级别
  • %(lineno)d : 报错行号
  • %(message)s : 具体的日志详情信息
  • %(module)s : 那个模块的报错
  • %(name)s : 收集器的名字

logging 模块的封装

# 封装处理日志的类
import logging
from danyuan.handle_config import do_config # 从配置文件中获取 class HandleLog:
"""
封装处理日志的类
"""
def __init__(self):
# 1. 定义日志收集器
self.case_logger = logging.getLogger(do_config.get_value("log", "logger_name")) # 2. 指定日志收集器的日志等级
self.case_logger.setLevel(do_config.get_value("log", "logger_level")) # 3. 定义日志输出渠道
console_handle = logging.StreamHandler() # 定义日志输出到控制台
file_handle = logging.FileHandler(do_config.get_value("log", "log_filename"), encoding="utf-8") # 定义日志输出到文件 # 4. 指定日志输出渠道的日志等级
console_handle.setLevel(do_config.get_value("log", "console_level"))
file_handle.setLevel(do_config.get_value("log", "file_level")) # 5. 定义日志显示的格式
simple_formatter = logging.Formatter(do_config.get_value("log", "simple_formatter")) # 简单点的格式
verbose_formatter = logging.Formatter(do_config.get_value("log", "verbose_formatter")) # 详细的格式 console_handle.setFormatter(simple_formatter) # 控制台显示简洁的日志
file_handle.setFormatter(verbose_formatter) # 日志文件中显示详细日志 # 6. 对接, 将日志收集器与输出渠道对接
self.case_logger.addHandler(console_handle)
self.case_logger.addHandler(file_handle) def get_logger(self):
"""
获取logger日志对象
:return:
"""
return self.case_logger # do_log = HandleLog().get_logger() # 实例化对象 if __name__ == '__main__':
do_log = HandleLog()
case_logger = do_log.get_logger()
case_logger.debug("这是一个debug级别的日志") # 手动记录日志
case_logger.info("这是一个info级别的日志")
case_logger.warning("这是一个warning级别的日志")
case_logger.error("这是一个error级别的日志")
case_logger.critical("这是一个critical级别的日志")

*******请大家尊重原创,如要转载,请注明出处:转载自:https://www.cnblogs.com/shouhu/   谢谢!!*******

Python 中 对logging 模块进行封装,记录bug日志、日志等级的更多相关文章

  1. Python中的logging模块就这么用

    Python中的logging模块就这么用 1.日志日志一共分成5个等级,从低到高分别是:DEBUG INFO WARNING ERROR CRITICALDEBUG:详细的信息,通常只出现在诊断问题 ...

  2. Python中的logging模块

    http://python.jobbole.com/86887/ 最近修改了项目里的logging相关功能,用到了python标准库里的logging模块,在此做一些记录.主要是从官方文档和stack ...

  3. Python中的logging模块【转】https://www.cnblogs.com/yelin/p/6600325.html

    [转]https://www.cnblogs.com/yelin/p/6600325.html 基本用法 下面的代码展示了logging最基本的用法. 1 # -*- coding: utf-8 -* ...

  4. Python入门之Python中的logging模块

    基本用法 下面的代码展示了logging最基本的用法. import logging import sys # 获取logger实例,如果参数为空则返回root logger logger = log ...

  5. 【python,logging】python中的logging模块

    本文章转自kenby的博客,比较全面易懂,转来留作以后使用. http://kenby.iteye.com/blog/1162698 一.从一个使用场景开始 import logging # 创建一个 ...

  6. python中的logging模块学习

    Python的logging模块 Logging的基本信息: l  默认的情况下python的logging模块打印到控制台,只显示大于等于warning级别的日志 l  日志级别:critical ...

  7. Python自建logging模块

    本章将介绍Python内建模块:日志模块,更多内容请从参考:Python学习指南 简单使用 最开始,我们用最短的代码体验一下logging的基本功能. import logging logger = ...

  8. python中的logging日志模块

    日志是程序不可或缺的一部分.它可以记录程序的运行情况,帮助我们更便捷地发现问题,而python中的logging日志模块给我们提供了这个机会. logging给我们提供了五种函数用来输出日志:debu ...

  9. python中的shutil模块

    目录 python中的shutil模块 目录和文件操作 归档操作 python中的shutil模块 shutil模块对文件和文件集合提供了许多高级操作,特别是提供了支持文件复制和删除的函数. 目录和文 ...

随机推荐

  1. 六 一对多关联查询&关联查询小结

    一对多关联查询:基于用户表关联查询订单表 在pojo中,一的一方方式多的一方的集合 在代理映射中配置查询方法,ResultMap一对多关系(注意:当两表有字段重名时,在一方字段设置别名,以免造成查询混 ...

  2. GIMP

    1. 认识GIMP 2. GIMP与Photoshop的对比 3. GIMP官方手册教程 4. 2本GIMP的外文书下载 5. 2个外部入门教程 6. 其他相关软件 1. 认识GIMP GIMP是可用 ...

  3. COGS 2294. [HZOI 2015] 释迦

    额,其实就是裸的三模数NTT,上一篇已经说过了 哦,还有一个就是对乘起来炸long long的数取模,用long double之类的搞一下就好,精度什么的,,(看出题人心情??) #include&l ...

  4. MySQL多实例安装(相同版本)

    本文以MySQL5.7为例,介绍在同一台机器下如何安装多个MySQL实例. 环境:RHEL 6.5 + MySQL 5.7 1.单实例MySQL安装 2.多实例MySQL配置 3.多实例MySQL初始 ...

  5. 【Go语言系列】2.2、Go语言基本程序结构:关键字与标识符

    什么是标识符 标识符用来命名变量.类型等程序实体.标识符是指Go语言对各种变量.方法.函数等命名时使用的字符序列,标识符由若干个字母.下划线_.和数字组成,且第一个字符必须是字母.通俗的讲就是凡可以自 ...

  6. less在vscode中的配置方式

    1.在vscode插件中下载easy less这个插件. 2.新建项目,分别建两个文件夹存放less和自动编译好的css,页面中引入文件引css就可以了. 3.根据你的文件位置,在用户设置中设置需要配 ...

  7. 二、Linux目录结构&常用指令

    Linux目录结构: ps -ef:任务管理器 ifconfig: 查看ip ping :  测试与目标主机的连通性,ctrl+c停止 目录指令: ll:列出当前目录下的文件信息 ls -al : 列 ...

  8. Vue的7属性-8方法-7指令

    Vue的7属性: el属性 绑定id,用来指示vue编译器从什么地方开始解析 vue的语法,可以说是一个占位符 data属性 用来组织从view中抽象出来的属性,可以说将视图的数据抽象出来存放在dat ...

  9. USACO[19-20]Dec银组题解

    1,MooBuzz 这题其实是道数学题. 我们先找找符合要求的数:1,2,4,7,8,11,13,14…… 我们发现再往后找都是这8个数中的一个加15k如:16……19……29…… 找规律发现k=n/ ...

  10. nohup command 2>&1 & 的含义

    nohup command 2>&1 &的含义: nohup:no hang up,意思是不挂断.表示永久执行命令,哪怕当前终端已经退出登录. 并且命令前面添加nohup之后,会 ...