我对python日志是个新手,我可以很容易地看到它比我所提出的家庭BREW解决方案更受欢迎。
有一个问题我似乎找不到答案:我如何在每个方法/函数的基础上压制日志消息?
我的假设模块包含一个函数。随着我的发展,日志调用是一个很大的帮助:

logging.basicConfig(level=logging.DEBUG,
                format=('%(levelname)s: %(funcName)s(): %(message)s'))
log = logging.getLogger()

my_func1():
    stuff...
    log.debug("Here's an interesting value: %r" % some_value)
    log.info("Going great here!")
    more stuff...

当我总结了我的“我的func1”并开始了第二个函数“我的func2”的工作时,“我的func1”的日志消息开始从“有用”变为“杂乱”。
是否有单行magic语句,如“logging.disabled”in_this_func(),我可以将其添加到“my_func1”的顶部以禁用“my_func1”中的所有日志调用,但仍保留所有其他函数/方法中的日志调用不变?
谢谢
Linux、Python 2.7.1

最佳答案

诀窍是创建多个记录器。
这有几个方面。
第一。不要在模块开头使用logging.basicConfig()。仅在主导入开关内使用

 if __name__ == "__main__":
     logging.basicConfig(...)
     main()
     logging.shutdown()

第二个。除了设置全局首选项之外,永远不要获取“根”记录器。
第三。为可能启用或禁用的内容获取名为logger的个人。
log = logging.getLogger(__name__)

func1_log = logging.getLogger( "{0}.{1}".format( __name__, "my_func1" )

现在,您可以在每个命名的记录器上设置日志级别。
log.setLevel( logging.INFO )
func1_log.setLevel( logging.ERROR )

关于python - 禁用每个方法/功能的记录?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7341064/

10-16 23:57