如何仅为所有导入的模块创建单独的记录器

2024-04-19 21:44:02 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个python脚本,它有一个记录器logger = logging.getLogger(__name__)

我在脚本中导入了许多模块(例如:kiteconnect)。我希望为所有导入的模块提供一个单独的记录器。类似于import_logger = logging.getLogger(**all_modules_excluding__name__**)

我希望模块(我在里面)和模块(我已经导入)有单独的记录器

我该怎么做

提前谢谢


Tags: 模块nameimport脚本modulesloggingalllogger
1条回答
网友
1楼 · 发布于 2024-04-19 21:44:02

如果您不控制模块的源代码,则无法阻止它们创建自己的记录器,这些记录器都有不同的名称。但是,有一个功能可以帮助您:日志记录器是分层的,除非没有明确关闭它们的传播,否则它们都会将日志发送到根日志记录器。因此,实际上根记录器将拥有来自所有模块的所有日志。如果在应用程序记录器上打开传播,则应用程序日志将有效地保存在该记录器上,所有模块日志将保存在根记录器中。您可能仍然需要让各个模块记录器设置其级别。在代码中,它看起来像这样:

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

相关问题 更多 >