python - 如何仅为所有导入的模块创建单独的记录器
问题描述
我有一个 python 脚本,它有一个记录器logger = logging.getLogger(__name__)
我在脚本中导入了许多模块(例如:kiteconnect)。我希望为所有导入的模块有一个单独的记录器。就像是import_logger = logging.getLogger(**all_modules_excluding__name__**)
我希望为模块(我在里面)和模块(我已经导入)有单独的记录器
我怎样才能做到这一点?
提前致谢
解决方案
如果您不控制模块的源代码,则无法阻止它们创建自己的具有不同名称的记录器。然而,有一个功能可以帮助您:记录器是分层的,除非没有明确关闭它们的传播,否则它们都会将它们的日志发送到根记录器。所以实际上根记录器将拥有来自所有模块的所有日志。如果您在应用程序记录器上打开传播,您的应用程序日志将有效地记录在该记录器上,并且所有模块都记录在根记录器中。您可能仍然需要让各个模块记录器来设置它们的级别。在代码中,它看起来像这样:
import logging
#import modules here
import_logger = logging.getLogger()
import_logger.addHandler(logging.StreamHandler()) # use any handler you want
logger = logging.getLogger(__name__)
logger.propagate = False
推荐阅读
- react-native - 如何在 React Native 中将文本垂直居中在自己的框架中?
- javascript - 在没有任何库的情况下使用大整数解决错误计算的最佳方法
- rust - 如何阻止通用 TimeZone “渗入”其他结构?
- javascript - 如何在 var a 中设置动态数据
- visual-studio-2019 - “致命错误 C1083:无法打开编译器生成的文件:'':无效参数”,同时尝试“pip install robotframework-confluentkafkalibrary”
- flutter - Flutter - 如何以 24 小时格式限制 ShowTimePicker 中的时间选择
- angular - 选项卡关闭时关闭 Websocket 连接
- android - Android 获取 Compose 的布局宽度和高度
- asp.net-core - ASP.NET Core 网站上的 Facebook 登录应用程序授权问题
- google-colaboratory - 下载进度不断创建新行