一、logging日志模块等级

常见log级别从高到低:

CRITICAL 》ERROR 》WARNING 》INFO 》DEBUG,默认等级为WARNING,即>=WARNING级别的log才输出。

日志等级(level)

描述

CRITICAL

当发生严重错误,导致应用程序不能继续运行时记录的信息

ERROR

由于一个更严重的问题导致某些功能不能正常运行时记录的信息

WARNING

当某些不期望的事情发生时记录的信息(如,磁盘可用空间较低),但是此时应用程序还是正常运行的

INFO

信息详细程度仅次于DEBUG,通常只记录关键节点信息,用于确认一切都是按照我们预期的那样进行工作

DEBUG

最详细的日志信息,典型应用场景是 问题诊断

二、logging模块的使用方式介绍

logging模块提供了两种记录日志的方式:

第一种方式是使用logging提供的模块级别的函数

第二种方式是使用Logging日志系统的四大组件

其实,logging所提供的模块级别的日志记录函数也是对logging日志系统相关类的封装而已。

(1)logging模块定义的模块级别的常用函数

函数

说明

logging.debug(msg, *args, **kwargs)

创建一条严重级别为DEBUG的日志记录

logging.info(msg, *args, **kwargs)

创建一条严重级别为INFO的日志记录

logging.warning(msg, *args, **kwargs)

创建一条严重级别为WARNING的日志记录

logging.error(msg, *args, **kwargs)

创建一条严重级别为ERROR的日志记录

logging.critical(msg, *args, **kwargs)

创建一条严重级别为CRITICAL的日志记录

logging.log(level, *args, **kwargs)

创建一条严重级别为level的日志记录

logging.basicConfig(**kwargs)

对root logger进行一次性配置

其中logging.basicConfig(**kwargs)函数用于指定“要记录的日志级别”、“日志格式”、“日志输出位置”、“日志文件的打开模式”等信息,其他几个都是用于记录各个级别日志的函数。

(2)logging模块的四大组件

组件

说明

loggers

提供应用程序代码直接使用的接口

handlers

用于将日志记录发送到指定的目的位置

filters

提供更细粒度的日志过滤功能,用于决定哪些日志记录将会被输出(其它的日志记录将会被忽略)

formatters

用于控制日志信息的最终输出格式

三、自定义Logger模块类

# testLog1.py

import logging

import time

class Logger():

def __init__(self, logger, level=logging.DEBUG):

'''     : 自定义Logger模块类

: logger: logger名

: level: 日志级别

'''

# 创建一个logger

self.logger = logging.getLogger(logger)

self.logger.setLevel(level)

# 定义handler的输出格式

curr_time = time.strftime("%Y-%m-%d")

self.LogFileName = 'log' + curr_time + '.txt'

fmt = logging.Formatter('%(asctime)s - %(filename)s:[%(lineno)s] - [%(levelname)s] - %(message)s')

# asctime: 日志事件发生的时间

# filename: 源文件的名称部分,包含文件后缀

# lineno: 调用日志记录函数的源代码所在的行号

# evelname: 该日志记录的文字形式的日志级别

# message: 日志记录的文本内容

# 创建一个handler, 用于写入日志文件

fh = logging.FileHandler(self.LogFileName)

fh.setLevel(logging.DEBUG)

fh.setFormatter(fmt)

# 再创建一个handler,用于输出到控制台

ch = logging.StreamHandler()

ch.setLevel(logging.DEBUG)

ch.setFormatter(fmt)

# 给logger添加handler

self.logger.addHandler(fh)

self.logger.addHandler(ch)

# level优先级

# logger.setLevel > handler.setLevel > logging.basicConfig

if __name__ == "__main__":

log = Logger(__name__, level=logging.DEBUG)

log.logger.debug('debug')

log.logger.log(logging.DEBUG, 'debug')# 执行testLog1.py,则控制台输出如下:2020-08-03 20:36:47,104 - testLog1.py:[117] - [DEBUG] - debug2020-08-03 20:36:47,104 - testLog1.py:[118] - [DEBUG] - debug# 日志文件记录如下:2020-08-03 20:36:15,982 - testLog1.py:[117] - [DEBUG] - debug2020-08-03 20:36:15,982 - testLog1.py:[118] - [DEBUG] - debug

# testLog2.py

from testLog1 import Logger

import traceback

log = Logger(__name__)

def func():

try:

assert 1==2

except Exception:

log.logger.info('测试失败,输出信息如下:{}'.format(traceback.format_exc()))    # traceback.format_exc() 会返回异常信息的字符串

if __name__ == "__main__":

func()# 执行testLog2.py,则控制台输出如下:2020-08-03 20:43:44,907 - testLog2.py:[11] - [INFO] - 测试失败,输出信息如下:Traceback (most recent call last):  File "E:/imooc/testLog.py", line 9, in func    assert 1==2AssertionError# 日志文件记录如下:2020-08-03 20:43:44,907 - testLog2.py:[11] - [INFO] - 测试失败,输出信息如下:Traceback (most recent call last):  File "E:/imooc/testLog.py", line 9, in func    assert 1==2AssertionError

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持python博客。

python logging模块的作用及应用场景_Python logging模块原理解析及应用相关推荐

  1. python logging模块的作用及应用场景_Python常用模块功能简介(三)logging

    logging基本介绍 先介绍一下我们为什么要使用日志,平常我们编写程序为了验证程序运行与debug,通常会使用print函数来对一些中间结果进行输出验证,在验证成功后再将print语句注释或删除掉. ...

  2. BLE蓝牙模块的作用及应用场景

    转载自:https://jingyan.baidu.com/article/647f0115e226be7f2048a871.html 侵删 一.BLE蓝牙模块的作用 1. 蓝牙模块是一种集成蓝牙功能 ...

  3. python最常用的编程方式是什么_python常用模块和对象编程

    1.摘要 常用模块 对象编程 领域模型 2.常用模块 2.1shutil模块 2.1.1 shutil.copyfileobj(fsrc, fdst[, length]) 1 f = open(&qu ...

  4. python导入同一文件夹下的类_python自定义模块

    模块的引入方式: 1.import 模块名:导入模块中的所有内容(引入多个用逗号分隔) import random,time 2.from 模块名 import 函数名1,函数名2... 导入部分模块 ...

  5. python celery应用场景_python celery 模块

    Celery是基于Python开发的一个分布式任务队列框架,支持使用任务队列的方式在分布的机器/进程/线程上执行任务调度 Celery是典型的生产生-消费者模式,主要由三部分组成:broker(消息队 ...

  6. python中的类装饰器应用场景_Python 自定义装饰器使用写法及示例代码

    1.Python装饰器简介 python的装饰器就是一个Python函数,它可以让其他函数在不需要做任何代码变动的前提下增加额外功能,装饰器的返回值也是一个函数对象.简单的说装饰器就是一个用来返回函数 ...

  7. python读取文件夹下特定的文件_python os模块获取指定文件夹下所有文件名

    本文采用os.walk()和os.listdir()两种方法,获取指定文件夹下的文件名. python os模块获取指定文件夹下所有文件名 第一种方法使用os.walk(): os.walk() 方法 ...

  8. python中match方法返回字符串的长度_Python re模块与正则表达式详解

    Python 中使用re模块处理正则表达式,正则表达式主要用来处理文本中的查找,匹配,替换,分割等问题:我们先来看一个问题,切入正则表达式. 问题: 匹配字符串,最少以3个数字开头.使用Python代 ...

  9. python中csv模块是自带的吗_python csv模块 Python的CSV模块,怎么新建为添加模式

    在python 3.5.2中csv模块怎么 安装 首先打开cmd,Ctrl + R快捷键.输入cmd,点击回车.在cmd命令窗口输入python,检查环境是否配置好.退出环境exit().输入 pip ...

最新文章

  1. Gridview分页模板
  2. struts2教程(5)--请求参数校验
  3. 4.1邮箱的全选,全不选,反选
  4. 如何显示Organization unit ID
  5. php html中的判断,php包含_php 判断字符串是否包含html标签
  6. 使用AfxGetMainWnd函数的一个心得
  7. SBUS2 协议初探
  8. 计算机怎么改鼠标标志,win10系统电脑的鼠标图标怎么修改
  9. 聚类分析在SPSS上的实现与结果分析——基于SPSS实验报告
  10. ios10 申请拍照权限_iOS 10 获取相册相机权限
  11. VR头显设备相关接口详解
  12. 计算机网络有线通信媒体,计算机网络基础知识之传输媒体
  13. Yann LeCun:大模型方向错了,智力无法接近人类
  14. 基于STM32F4单片机对步进电机的控制(有代码)
  15. js中 new原理及实现
  16. react-native-art path代码解析
  17. 整理:console的用法
  18. 昆明钉钉硬件销售服务商,钉钉魔点G2人脸识别智能门禁一体机、云考勤机解决方案
  19. 谷德威天津思科CCNA培训之访问控制列表和NAT设置
  20. 开发线上商城需要具备哪些功能?

热门文章

  1. scrapy使用代理报错keyerror: proxy_爬虫Scrapy框架-Crawlspider链接提取器与规则解析器...
  2. 什么是spring_Spring 源码第三弹!EntityResolver 是个什么鬼?
  3. 电影评论分类:二分类问题
  4. Django第二天笔记
  5. php gearman 扩展,Ubuntu 12.04 安装 gearman 以及php扩展安装脚本
  6. AI技术在空气净化机器人中的高能应用
  7. 会议交流 | IJCKG 2021 日程表(北京时间)
  8. 玩转算法之面试 第八章-递归与回溯
  9. 万字长文:近年来学界、业界视角下的“事理图谱”发展总结与思考
  10. makefile编译erlang