2024-04-19 21:44:02 发布
网友
我有一个python脚本,它有一个记录器logger = logging.getLogger(__name__)
logger = logging.getLogger(__name__)
我在脚本中导入了许多模块(例如:kiteconnect)。我希望为所有导入的模块提供一个单独的记录器。类似于import_logger = logging.getLogger(**all_modules_excluding__name__**)
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
如果您不控制模块的源代码,则无法阻止它们创建自己的记录器,这些记录器都有不同的名称。但是,有一个功能可以帮助您:日志记录器是分层的,除非没有明确关闭它们的传播,否则它们都会将日志发送到根日志记录器。因此,实际上根记录器将拥有来自所有模块的所有日志。如果在应用程序记录器上打开传播,则应用程序日志将有效地保存在该记录器上,所有模块日志将保存在根记录器中。您可能仍然需要让各个模块记录器设置其级别。在代码中,它看起来像这样:
相关问题 更多 >
编程相关推荐