在python中设置默认日志记录级别

时间:2016-10-10 16:40:59

标签: python python-2.7 logging maya pymel

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

有人可以建议我如何切换默认日志记录级别吗?

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

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

3 个答案:

答案 0 :(得分:2)

我没有具体了解pymel,但它在日志记录方面看起来并不是很好。你可以尝试:

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

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

答案 1 :(得分:0)

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

答案 2 :(得分:-1)

我和你一样处于类似状况,
我也尝试以编程方式在互联网上搜索很多内容,
在这种情况下,最好不要使用import logging,而应使用像这样的简单函数调用。 ,
def own_log(msg): with open ("test.log",'a') as fd: fd.write(msg)
我之所以提出这一建议,是因为其简单的logging模块设置了globalglobal级别。

编辑:
也许您应该使用一些最佳做法,请尝试使用logging.getLogger(__name__)