#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__)