Python中的logging日志输出模块

本文详细介绍了Python的logging模块,包括日志级别、格式字符串、基本配置、Logger类的使用,如Logger.getLogger、层次结构和Level级别设置。讲解了Handler如何负责输出信息,Formatter类用于设置日志格式,以及Filter过滤器的作用。文章还通过实例演示了如何在Python中使用logging模块进行日志输出和管理。
摘要由CSDN通过智能技术生成

Python中的logging日志输出模块

日志级别

日志级别Level 对应数值
CRITICAL 50
ERROR 40
WARRNING 30,默认级别
INFO 20
DEBUG 10
NOTSET 0
import logging

print("logging.CRITICAL = ",logging.CRITICAL)
print("logging.ERROR = ",logging.ERROR)
print("logging.WARNING = ",logging.WARNING)
print("logging.INFO = ",logging.INFO)
print("logging.DEBUG = ",logging.DEBUG)
print("logging.NOTSET = ",logging.NOTSET)

logging_001.jpg

日志级别指的是产生日志的事件的严重程度。
设置一个级别后,严重程度低于设置的日志消息将被忽略。
对应的打印方法有:debug()、info()、warning()、error()、和critical()方法

常用的格式字符串

  • 常用的格式字符串通常定义在Format里面。
属性名称 格式 描述
日志消息内容 %(message)s 使用对应级别打印时传入的message变量值。
可以使用Formatter.format()设置设置打印格式。
asctime %(asctime)s 创建LogRecord时的可读时间。默认情况下,它的格式为’2003-07-08 16:49:45,896’(逗号后面的数字是毫秒部分的时间)
函数名 %(funcName)s 日志调用所在函数的函数名
logger名称 %(name)s logger的名字
日志级别名称 %(levelname)s 消息的级别名称:
“DEBUG”,“INFO”,“WARNING”,“ERROR”,“CRITICAL”
日志级别数值 %(levelno)s 消息的级别数字,对应DEBUG,INFO,WARNING,ERROR,CRITICAL
行号 %(lineno)d 日志调用所在的源码行号
模块 %(module)d 模块(filename名字部分)
进程ID %(process)d 进程ID
线程ID %(thread)d 线程ID
进程名称 %(processName)s 进程名称
线程名称 %(threadName)s 线程名称
logger名称 %(name)s 使用的logger对应名称
pathname %(pathname)s 输出日志调用的文件完整路径

注意:funcName,threadName,processName都是小驼峰。

logging.basicConfig参数解析

  • logging.basicConfig(**kwargs)
  • logging.basicConfig会初始化配置logging.root日志输出模块的配置信息。
关键字参数名称 意思
filename 类型(字符串),定义模块输出的日志在指定文件中。不能与stream同时指定。
如果不指定默认使用sys.stderr流对象输入,即标准错误输出。
filemode 如果指定了filename,那么打开文件的模式为filemode模式,默认为“a”模式打开。
stream 指定日志文件输出的流对象,默认为sys.stderr流对象,不能与filename同时存在,会触发ValueError异常。
format 为处理程序指定格式化字符串,默认为:%(levelname)s:%(name)s:%(message)s
datefmt 使用指定日期时间的格式time.strftime()
style 指定默认字符串使用的格式。注意:info等打印日志时传入的参数只能使用c风格,即“%”风格。可选择值如下:
"%":表示使用c风格格式字符串,此时默认的format格式为:"%(levelname)s:%(name)s:%(message)s"。
"{":表示使用format,此时format格式为:"{levelname}:{name}:{message}"。
" " : 使 用 S t r i n g T e m p l a t e S t y l e 风 格 。 此 时 f o r m a t 格 式 为 : " l e v e l n a m e : ":使用StringTemplateStyle风格。此时format格式为:"{levelname}: ":使StringTemplateStyleformat"levelname:{name}?{message}"
level 设置root日志输出的级别
handlers 添加其他输出日志方式,实际输出日志都是handler的作用。如果设置了handlers列表,那么同时不能使用filename和stream参数,否则会抛出ValueError异常。

举例

  • 使用默认级别输出日志
    1. #初始化时,如果没指定level,那么level的默认级别为WARNING
    2. 低于默认级别(也就是小于默认级别值的)消息输出将不会被输出。
import logging

FORMAT = "%(asctime)-15s Thread info: %(thread)d %(threadName)s %(message)s"
logging.basicConfig(format=FORMAT,level=logging.WARNING) #初始化时,如果没指定level,那么level的默认级别为WARNING

logging.info("打印测试 {}".format(1)) #info不显示
logging.warning("打印测试 {}".format(2)) #warning是默认级别

logging_002.jpg

  • 构建消息
import logging

FORMAT = "%(asctime)-15s Thread info: %(thread)d %(threadName)s %(message)s"
logging.basicConfig(format=FORMAT,level=logging.INFO) #初始化时,如果没指定level,那么level的默认级别为WARNING

logging.info("我是 {}".format(20)) #单一字符串输出
logging
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值