получение имени вызывающего модуля при использовании метода импорта - python - PullRequest
0 голосов
/ 13 января 2020

Я реализовал свой собственный регистратор в моей инфраструктуре автоматизации (на основе pytest) , которая наследуется от класса logging.Logger.

Теперь я хочу, чтобы он каждый раз импортировался каким-либо модулем с помощью следующей команды:
from framework import Logger as logger для создания дочернего элемента с именем вызывающего модуля.

Я знаю, что некоторый код внутри класса может быть запущен при импорте его в другой модуль, поэтому я хочу, чтобы этот код создавал дочерний журнал.

Моя проблема в том, что я не знаю, как получить имя вызывающего модуля, я пытался использовать inspect.stack(), но я получаю огромный список, с которым не знаю, как обращаться с ним.

Есть ли другой способ, которым я могу это реализовать?

1 Ответ

0 голосов
/ 13 января 2020

Я не думаю, что это возможно, вы должны передать logger в качестве аргумента для вашего конкретного случая использования.

   from utils import do_something
   logger = logging.getLogger(__name__)

   do_something()  # logger global is not visible in do_something()
   do_something(logger=logger)  # the only way

другой вариант - иметь трассировку как logging do c

logger.warning("something raised an exception:", exc_info=True)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...