我们在编写Python 程序时,记录日志信息是一种非常重要的需求,日志可以帮助调试和跟踪程序的执行过程。那么Python中提供了内置的logging模块,用于记录各种级别的日志信息。本文主要介绍Python日志信息输出的实现过程。
1. 导入 logging 模块
首先,需要导入 logging 模块。
import logging
2. 配置日志记录器
需要配置一个日志记录器,以便在程序中的不同地方记录日志信息。
logging.basicConfig(level=logging.DEBUG, # 设置记录的最低级别
format='%(asctime)s - %(name)s - %(levelname)s - %(message)s')
3. 记录日志信息
在程序的不同位置记录日志信息
logging.debug("This is a debug message.")
logging.info("This is an info message.")
logging.warning("This is a warning message.")
logging.error("This is an error message.")
logging.critical("This is a critical message.")
4. 设置日志级别
通过设置日志记录器的级别,可以控制记录的日志信息的详细程度。级别包括 DEBUG、INFO、WARNING、ERROR 和 CRITICAL。
logging.basicConfig(level=logging.INFO)
5. 输出日志到文件
除了控制台输出,还可以将日志信息记录到文件中。
logging.basicConfig(filename='example.log', level=logging.INFO)
6. 格式化日志信息
通过设置不同的格式,可以自定义日志信息的输出格式。
logging.basicConfig(format='%(asctime)s - %(levelname)s - %(message)s')
7. 捕获异常信息
程序运行过程中,难免会遇到报错,在捕获异常时,也可以记录异常信息。
try:
# 一些可能出现异常的操作
except Exception as e:
logging.error(f"An error occurred: {e}", exc_info=True)
8. 使用不同的日志记录器
可以创建不同的日志记录器,以便将日志信息分发到不同的地方。
logger = logging.getLogger('example_logger')
logger.setLevel(logging.DEBUG)
9、一个日志配置的实例
import logging
# 配置日志记录器,设置记录的最低级别为 DEBUG,同时指定输出格式
logging.basicConfig(level=logging.DEBUG, format='%(asctime)s - %(name)s - %(levelname)s - %(message)s')# 创建一个日志记录器
logger = logging.getLogger('example')# 输出到控制台
console_handler = logging.StreamHandler()
console_handler.setLevel(logging.DEBUG)
logger.addHandler(console_handler)# 输出到文件
file_handler = logging.FileHandler('example.log')
file_handler.setLevel(logging.INFO)
logger.addHandler(file_handler)def divide(x, y):
try:
result = x / y
except ZeroDivisionError:
logger.error("Tried to divide by zero", exc_info=True) # 记录异常信息
else:
logger.info(f"{x} divided by {y} is {result}") # 记录除法结果# 调用函数并记录日志信息
divide(10, 2)
divide(10, 0)
在这个例子中,首先配置了一个日志记录器,并设置了记录的最低级别为 DEBUG,同时指定了输出格式。然后创建了一个名为 example 的日志记录器。
将两个处理器添加到日志记录器中:一个是输出到控制台的处理器,另一个是输出到文件的处理器。
用于测试,定义了一个 divide() 函数来执行除法运算,同时记录除法结果或异常信息到日志中。
最后,我们调用 divide() 函数两次,一次是正常情况下的除法运算,另一次是尝试除以零的情况。
日志信息将会输出到控制台和名为 example.log 的文件中。