Установите уровень ведения журнала по умолчанию в python

#python #python-2.7 #logging #maya #pymel

#python #python-2.7 #ведение журнала #maya #pymel

Вопрос:

У меня возникли проблемы с модулем (в частности, с pymel.core в maya), который, похоже, изменяет уровень ведения журнала по умолчанию. Когда я импортирую pymel, все разные регистраторы в модулях, которые я использую, внезапно настраиваются на отладку и начинают выдавать кучу вещей, которые я не хочу видеть. Мне кажется, что pymel меняет уровень ведения журнала по умолчанию в модуле ведения журнала, но я не совсем уверен, где. Я просмотрел документацию по ведению журнала, и я не уверен, как вернуть его к тому, что было раньше, я вижу только, как установить уровень для отдельного регистратора.

Может кто-нибудь подсказать, как я могу переключить уровень ведения журнала по умолчанию?

 >>> import logging
>>> logging.getLogger().getEffectiveLevel()
30
>>> import pymel.core
>>> logging.getLogger().getEffectiveLevel()
0
  

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

Комментарии:

1. logging.getLogger().setLevel(logging.WARNING) ? В любом случае, похоже, что этот пакет делает что-то не так с их конфигурацией ведения журнала.

2. Вы можете сбросить уровень регистратора после импорта pymel через logging.getLogger().level = logging.WARNING . Обратите внимание, что существует открытый запрос на исправление, возможно, вы захотите запросить его объединение.

Ответ №1:

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

 if __name__ == '__main__':
    import logging, pymel.core
    logging.getLogger().setLevel(logging.WARNING)  # or whatever
    logging.getLogger('pymel').setLevel(logging.WARNING)
  

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

Ответ №2:

Во вложенной папке pymel каталога есть файл, вызываемый pymel.conf при установке Maya site-packages . Он управляет настройками журнала для разных частей pymel, используя ту же файловую систему конфигурации в модуле ведения журнала по умолчанию.

Ответ №3:

Я был в подобной ситуации, подобной вашей,
я пытался много искать в Интернете, а также программно,
в этой ситуации лучше не использовать import logging , используйте простой вызов функции, подобный этому. ,
def own_log(msg):
with open ("test.log",'a') as fd:
fd.write(msg)

Я предложил это, потому что его простой и logging модуль устанавливает глобальный уровень.

РЕДАКТИРОВАТЬ:
возможно, вам следует использовать лучшие некоторые лучшие практики, попробуйте это logging.getLogger(__name__)