跳到内容

直接实例化 logger (LOG001)

源自 flake8-logging 代码检查器。

有时提供修复。

作用

检查是否直接实例化 logging.Logger,而不是使用 logging.getLogger()

为什么这不好?

Logger 对象 文档指出:

请注意,不应该直接实例化 Logger,而应该始终通过模块级别的函数 logging.getLogger(name)

如果直接实例化 logger,它将不会被添加到 logger 树中,并且会绕过所有配置。记录到它的消息只会发送到“最后的处理程序”,跳过任何过滤或格式化。

示例

import logging

logger = logging.Logger(__name__)

建议改为

import logging

logger = logging.getLogger(__name__)

修复安全性

此修复始终是不安全的,因为从 Logger 更改为 getLogger 会通过将 logger 添加到日志树来更改程序行为。