在 logging 模块中,什么是记录器,处理器和格式化器,他们之间是什么 关系?掌握相关的设置语句。
时间: 2024-04-10 14:33:56 浏览: 6
在 logging 模块中,记录器(logger)、处理器(handler)和格式化器(formatter)是三个重要的概念,它们之间的关系如下:
1. 记录器(logger):记录器是 logging 模块中最顶层的概念,用于向日志系统发送日志记录。它是通过调用 logging.getLogger() 方法来创建的。记录器可以有多个,每个记录器都有一个唯一的名称。
2. 处理器(handler):处理器负责将日志记录发送到不同的目标,比如文件、终端等。一个记录器可以有多个处理器,处理器之间是并列的关系。可以通过调用 logging.addHandler() 方法将处理器添加到记录器中。
3. 格式化器(formatter):格式化器定义了日志记录的输出格式。一个处理器可以有一个或多个格式化器,格式化器之间是并列的关系。可以通过调用 logging.Formatter() 方法创建一个格式化器,并通过调用 logging.Handler.setFormatter() 方法将其应用于处理器。
下面是一些常用的设置语句示例:
```python
import logging
# 创建记录器
logger = logging.getLogger('my_logger')
# 创建处理器并设置级别
handler = logging.StreamHandler()
handler.setLevel(logging.DEBUG)
# 创建格式化器并设置格式
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
handler.setFormatter(formatter)
# 将处理器添加到记录器
logger.addHandler(handler)
# 设置记录器级别
logger.setLevel(logging.INFO)
# 输出日志记录
logger.debug('This is a debug message')
logger.info('This is an info message')
```
上述代码中,我们创建了一个名为 "my_logger" 的记录器,并通过 StreamHandler 创建了一个处理器,并设置了处理器的级别为 DEBUG。然后,我们创建了一个格式化器,并将其应用于处理器。最后,我们将处理器添加到记录器,并设置记录器的级别为 INFO。在输出日志记录时,只有级别高于或等于记录器级别的记录会被处理器处理和输出。