python——logging模块日志处理

本文详细介绍了Python的logging模块,包括日志级别、日志格式、使用方法和日志流处理流程。讲解了如何使用logging.basicConfig()设置日志格式,以及Logger、Handler、Formatter四大组件的功能和使用。此外,还探讨了如何通过四大组件记录日志,并满足特定需求,例如日志切割和不同级别日志的输出位置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

1、日志级别

2、日志字段信息与日志格式

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

4、使用logging提供的模块级别的函数记录日志

4.1、最简单的日志输出

4.2、logging.basicConfig()函数说明

4.3、 logging模块定义的格式字符串字段

5、logging模块日志流处理流程

5.1. logging日志模块四大组件

5.2. logging日志模块相关类及其常用方法介绍

Logger类

Handler类

Formater类

5.2. logging日志流处理流程

5.3. 使用logging四大组件记录日志

5.3.1. 需求

5.3.2. 分析


1、日志级别

级别排序:CRITICAL > ERROR > WARNING > INFO > DEBUG

日志等级(level)
描述
DEBUG
最详细的日志信息,典型应用场景是 问题诊断
INFO
信息详细程度仅次于DEBUG,通常只记录关键节点信息,用于确认一切都是按照我们预期的那样进行工作
WARNING
当某些不期望的事情发生时记录的信息(如,磁盘可用空间较低),但是此时应用程序还是正常运行的
ERROR
由于一个更严重的问题导致某些功能不能正常运行时记录的信息
CRITICAL
当发生严重错误,导致应用程序不能继续运行时记录的信息

2、日志字段信息与日志格式

一条日志信息对应的是一个事件的发生,而一个事件通常需要包括以下几个内容:
  • 事件发生时间
  • 事件发生位置
  • 事件的严重程度--日志级别
  • 事件内容
上面这些都是一条日志记录中可能包含的字段信息,当然还可以包括一些其他信息,如进程ID、进程名称、线程ID、线程名称等。日志格式就是用来定义一条日志记录中包含那些字段的,且日志格式通常都是可以自定义的
 

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

logging模块提供了两种记录日志的方式:
  • 第一种方式是使用logging提供的模块级别的函数
  • 第二种方式是使用Logging日志系统的四大组件
其实,logging所提供的模块级别的日志记录函数也是对logging日志系统相关类的封装而已。
 

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) 函数用于指定“要记录的日志级别”、“日志格式”、“日志输出位置”、“日志文件的打开模式”等信息,其他几个都是用于记录各个级别日志的函数。
 

logging模块的四大组件

组件
说明
loggers
提供应用程序代码直接使用的接口
handlers
用于将日志记录发送到指定的目的位置
filters
提供更细粒度的日志过滤功能,用于决定哪些日志记录将会被输出(其它的日志记录将会被忽略)
formatters
用于控制日志信息的最终输出格式
说明:  logging模块提供的模块级别的那些函数实际上也是通过这几个组件的相关实现类来记录日志的,只是在创建这些类的实例时设置了一些默认值。
 

4、使用logging提供的模块级别的函数记录日志

4.1、最简单的日志输出

先来试着分别输出一条不同日志级别的日志记录:
import logging
logging.debug("This is a debug log.")
logging.info("This is a info log.")
logging.warning("This is a warning log.")
logging.error("This is a error log.")
logging.critical("This is a critical log.")
也可以这样写:
logging.log(logging.DEBUG, "This is a debug log.")
logging.log(logging.INFO, "This is a info log.")
logging.log(logging.WARNING, "This is a warning log.")
logging.log(logging.ERROR, "This is a error log.")
logging.log(logging.CRITICAL, "This is a critical log.")
输出结果:
WARNING:root:This is a warning log.
ERROR:root:This is a error log.
CRITICAL:root:This is a critical log.

上面输出结果中每行日志记录的各个字段含义分别是:日志级别:日志器名称:日志内容

 
之所以会这样输出,是因为logging模块提供的日志记录函数所使用的日志器设置的日志格式默认是 BASIC_FORMAT ,其值为:
"%(le
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值