Python 的 logging
模块提供了灵活的方式来输出日志信息,它比简单的 print
函数强大得多,支持不同级别的日志记录、日志持久化、日志格式定制等功能。以下是 logging
模块的一些常用用法。
常用用法
-
配置日志 (
logging.basicConfig
): 配置日志的基础设置,如日志级别、日志文件、日志格式等。 -
设置日志级别: 日志级别从低到高分为 DEBUG, INFO, WARNING, ERROR, 和 CRITICAL。
-
记录日志: 使用
logging.debug()
,logging.info()
,logging.warning()
,logging.error()
, 和logging.critical()
来记录不同级别的日志。 -
日志格式: 可以自定义日志的格式,包括时间戳、日志级别、消息等。
-
日志处理器 (
Handler
): 可以将日志输出到不同的地方,如控制台、文件、网络等。 -
日志过滤器 (
Filter
): 可以根据需要过滤日志消息。 -
日志格式化 (
Formatter
): 可以定义日志的输出格式。
实战代码演示
以下是一个简单的示例,演示如何使用 logging
模块:
import logging
# 配置日志
logging.basicConfig(
level=logging.DEBUG, # 设置最低捕获级别
format='%(asctime)s - %(levelname)s - %(message)s', # 定义日志格式
datefmt='%Y-%m-%d %H:%M:%S', # 定义时间格式
handlers=[
logging.FileHandler("app.log"), # 将日志同时输出到文件
logging.StreamHandler() # 将日志输出到控制台
]
)
# 记录不同级别的日志
logging.debug("这是一条 debug 级别的日志")
logging.info("这是一条 info 级别的日志")
logging.warning("这是一条 warning 级别的日志")
logging.error("这是一条 error 级别的日志")
logging.critical("这是一条 critical 级别的日志")
try:
# 模拟一个错误
result = 10 / 0
except ZeroDivisionError:
logging.exception("发生错误") # 记录异常信息
在这个示例中:
- 使用
basicConfig
配置了日志系统,包括日志级别、格式、时间格式以及日志的输出位置(控制台和文件)。 - 记录了不同级别的日志信息,只有
INFO
级别以上的日志会被输出,因为配置的最低级别是DEBUG
。 - 使用
try-except
块来捕获一个异常,并使用logging.exception
来记录异常的堆栈跟踪,这是一个非常方便的方式来记录错误。
运行上述代码后,你会在同一目录下的 app.log
文件中看到日志的持久化输出,同时控制台也会显示相应的日志信息。