为什么logging
忽略了我为suds
记录器配置的设置?
在我的Django应用程序中,我在settings.py中设置了日志记录:
logging.basicConfig(
level = logging.DEBUG,
format = " %(levelname)s [%(asctime)s] %(filename)s: %(message)s",
datefmt='%d-%b %H:%M:%S',
)
我也在这个应用程序中使用suds,但是不想看到来自suds的大量消息,所以我添加了这个:
SUDS_LOGGING_LEVEL = logging.CRITICAL
logging.getLogger('suds.client').setLevel(SUDS_LOGGING_LEVEL)
logging.getLogger('suds.transport').setLevel(SUDS_LOGGING_LEVEL)
logging.getLogger('suds.xsd.schema').setLevel(SUDS_LOGGING_LEVEL)
logging.getLogger('suds.wsdl').setLevel(SUDS_LOGGING_LEVEL)
logging.getLogger('suds.resolver').setLevel(SUDS_LOGGING_LEVEL)
logging.getLogger('suds.xsd.query').setLevel(SUDS_LOGGING_LEVEL)
logging.getLogger('suds.xsd.basic').setLevel(SUDS_LOGGING_LEVEL)
logging.getLogger('suds.binding.marshaller').setLevel(SUDS_LOGGING_LEVEL)
然而我仍然看到suds DEBUG消息。
如果我在suds调用之前放置一个pdb断点,我确认logging.getLogger('suds.client').level
为50(logging.CRITICAL
)。我走到肥皂水线,我看到了所有的伐木。
如果我暂时更改根记录器的级别,则会禁止记录:
original_log_level = logging.getLogger().level
logging.getLogger().setLevel(logging.CRITICAL)
... do some suds stuff ...
logging.getLogger().setLevel(original_log_level)
这都表明suds
忽略了suds日志记录级别。
为什么?
Django 1.2.7,Python 2.7,suds 0.4 GA
答案 0 :(得分:3)
将%(name)s
添加到格式字符串中。这将告诉你究竟哪些肥皂水记录器仍在记录 - 也许你没有得到所有这些。 (例如,suds / client.py中的代码记录到名为'suds.client'的记录器,但也记录到名为'suds.metrics'的记录器。)
还尝试将'suds'记录器的级别设置为CRITICAL,看看是否会减少记录输出。