python - 日志记录无法配置一些导入的模块(包括导入)(python 日志记录)
问题描述
我想打印来自所有导入模块的所有日志消息。某些导入的模块没有记录。
请注意,我关心的库中的所有文件在
logger = logging.getLogger(__name__)
顶部都有调用。
对不起,如果这是一个简单的问题。我浏览了很多帖子都没有成功。
我观察到某些模块的记录器没有通过调用 basicConfig 来更新
import logging
import local_util # a local util file
from transformers import T5ForConditionalGeneration
for n in logging.root.manager.loggerDict:
print(logging.getLogger(n))
logging.basicConfig(level=logging.DEBUG)
console = logging.StreamHandler()
console.setLevel(logging.DEBUG)
formatter = logging.Formatter("[%(asctime)s] %(levelname)s::%(module)s::%(funcName)s() %(message)s")
console.setFormatter(formatter)
logging.getLogger('').addHandler(console)
for n in logging.root.manager.loggerDict:
print(logging.getLogger(n))
在第一次调用print(logging.getLogger(n))
几乎所有记录器时都设置了警告级别。
在第二次调用中,大多数记录器都设置为 DEBUG(包括用于 local_util 的记录器),但变压器库除外,它们都保持在 WARNING 级别。
如果我手动循环浏览所有记录器并重置它们的级别,我可以获得要打印的转换器消息。即使我force=True
在调用 basicConfig 时使用,transformers 库的记录器也不会更新。
解决方案
basicConfig
表示影响根记录器。如果其他子记录器未设置其级别(默认为NOTSET
),则它们使用根记录器的级别。
因此,如果transformers
自己设置了WARNING
级别,则不会使用DEBUG
root 级别。
您可以直接设置其级别如下:
transformers_logger = logging.getLogger('transformers')
transformers_logger.setLevel(logging.DEBUG)
推荐阅读
- python - chaquopy 中的语言检查工具
- python - 在我的 Pandas 和 Openpyxl 代码中使用 Writer.Close() 函数时出错
- rabbitmq - 使用 RabbitMQ 和 Camel 一条一条地消费消息
- local-storage - _lr_id_ localstorage 项目是什么,它来自哪里?
- java - 在 android 中使用 facebook 登录后无法获取 facebook 用户个人资料
- c++ - 我已经写了一个代码直接从数组创建最大堆到一个创建的虚拟数组但是输出是错误的,有人可以指出错误
- rest - 使用 Github REST API 将数据附加到现有文件而不替换
- javascript - 我们如何在 React 类组件状态下访问本地 JSON 文件数据
- minio - 如何更改 MinIO 中的存储桶名称?
- android - Android BLE App 只能订阅 1 个 BLE 设备的特征通知