2

我遇到了一个似乎会更改默认日志记录级别的模块(特别是 Maya 中的 pymel.core)。当我导入 pymel 时,我正在使用的模块中的所有不同记录器突然设置为调试并开始喷出大量我不想看到的东西。在我看来,pymel 正在更改日志模块中的默认日志级别,但我不太确定在哪里。我查看了日志记录文档,但不确定如何将其设置回以前的状态,我只能看到如何在单个记录器上设置级别。

谁能建议我如何切换默认日志记录级别?

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

我希望能够以某种方式将该默认级别设置回 30,因此当我的所有记录器从日志记录模块的默认值继承该级别时,它们都会恢复到以前的状态。抱歉,如果我误解了日志记录模块的工作原理,我对它很陌生。

4

3 回答 3

2

我不知道pymel具体,但它看起来在日志记录方面表现不佳。你可以试试:

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

但是,这可能不会阻止输出所有不需要的消息。您可以调整上述内容以适应您在实践中发现的内容。

于 2016-10-10T16:59:10.757 回答
0

pymel.conf在 Maya 安装目录的 pymel 子文件夹中有一个名为的文件site-packages。它使用默认日志模块中的相同配置文件系统控制 pymel 不同部分的日志设置。

于 2016-10-10T23:52:33.290 回答
-2

I was in the similar situation like yours ,
I tried to search a lot in internet as well programatically ,
In this situation better dont use import logging , Use a simple function call like this. ,
def own_log(msg): with open ("test.log",'a') as fd: fd.write(msg)
I suggested this because its simple and logging module setslevel globaly .

EDIT:
Maybe u should use best some best practices, try this logging.getLogger(__name__)

于 2018-11-28T08:35:53.550 回答