Python logging 是 Python 官方提供的日志模块,它可以帮助开发者更好地记录应用程序运行过程中的日志信息。下面是 Python logging 的完整攻略。
logging 模块简介
logging 模块旨在提供标准的 Python 日志记录接口。logging 模块可以将日志消息发送到多个的目的地,如控制台、文件、邮件、网络等。同时,开发者可以通过简单的配置来控制日志级别、打印格式、日志处理器等内容,来实现高效的日志处理。
logging 模块的使用
以下是 Python logging 模块的基本使用方法:
-
导入 logging 模块:使用 import logging 语句来导入 logging 模块。
-
配置日志记录器:创建一个日志记录器,设置记录器的日志级别、处理器、格式等信息。同一应用程序中可以创建多个记录器,用于不同的目的。
-
配置日志处理器:处理器用于将日志消息发送到指定的目的地。一般情况下,会将处理器绑定到日志记录器上。
-
记录日志:在代码中需要记录日志的地方,使用记录器的不同方法记录日志消息,不同方法对应不同的日志级别。
以下是一个简单的示例,展示如何使用 logging 模块记录日志:
import logging
# 配置日志记录器
logging.basicConfig(filename='example.log', level=logging.DEBUG,
format='%(asctime)s - %(levelname)s - %(message)s')
# 记录日志
logging.debug('This is a debug message')
logging.info('This is an informational message')
logging.warning('This is a warning message')
logging.error('This is an error message')
logging.critical('This is a critical error message')
在这个例子中,首先使用 logging.basicConfig() 方法来配置日志记录器,指定了日志文件的存储位置,记录的日志级别以及日志格式。其中,%(asctime)s,%(levelname)s,%(message)s 等是日志格式化字符串,代表日志生成时间、日志级别、日志消息等信息。
随后,使用不同方法记录不同级别的日志信息。当日志级别高于等于记录器的日志级别时,当前日志将被记录到日志文件中。
更进一步
除了上述基本使用方法外, logging 模块还提供了丰富的配置选项和高级功能,可以进行灵活的日志处理。例如:
-
同一应用程序中可以创建多个记录器,用于不同的目的。
-
可以通过设置日志级别,实现同一应用程序中不同部分的日志记录粒度控制。
-
可以通过配置处理器,将日志消息发送到不同的目的地,如控制台、文件、邮件、网络等。
-
可以自定义日志记录器,处理器和日志消息格式等内容,实现更高自由度的日志处理。
使用 logging 模块需要更加深入的学习和实践,可以参考 Python 官方文档提供的 Logging HOWTO 来学习。
示例说明
以下是一个示例,演示如何使用不同处理器将日志消息发送到控制台和文件中。
import logging
# 配置日志记录器
logger = logging.getLogger('example_logger')
logger.setLevel(logging.DEBUG)
# 控制台处理器
console_handler = logging.StreamHandler()
console_handler.setLevel(logging.DEBUG)
console_formatter = logging.Formatter('%(asctime)s - %(levelname)s - %(message)s')
console_handler.setFormatter(console_formatter)
logger.addHandler(console_handler)
# 文件处理器
file_handler = logging.FileHandler('example.log')
file_handler.setLevel(logging.INFO)
file_formatter = logging.Formatter('%(asctime)s - %(levelname)s - %(name)s - %(message)s')
file_handler.setFormatter(file_formatter)
logger.addHandler(file_handler)
# 记录日志
logger.debug('This is a debug message')
logger.info('This is an informational message')
logger.warning('This is a warning message')
logger.error('This is an error message')
logger.critical('This is a critical error message')
在这个例子中,首先使用 logging.getLogger() 方法创建了一个名为 'example_logger' 的记录器,并指定日志级别为 DEBUG。之后,使用 logging.StreamHandler() 方法创建了一个控制台输出处理器,并将其设置为处理器的级别和日志消息的格式。同样,使用 logging.FileHandler() 方法也创建了一个文件输出处理器,并将其设置为处理器的级别和日志消息的格式。最后使用 logger.addHandler() 方法将处理器与日志记录器绑定起来,以记录日志。
当运行这段代码时,控制台上会显示 DEBUG, INFO, WARNING 等不同级别的日志信息,文件 example.log 中也会记录 INFO, WARNING, ERROR, CRITICAL 内容的日志信息。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:说一说Python logging - Python技术站