//,一行回答"我如何设置日志级别为调试?"通常是这样的:
logging.basicConfig(level=logging.DEBUG)
然而,有人可能会想稍后将其更改为INFO之类的内容。
logging.basicConfig(level=logging.INFO)
然而,这不起作用。如果在相同的进程中在相同的范围内再次运行logging.basicConfig(level=logging.INFO)
,将不会导致更改记录的消息级别。
官方Python文档,在https://docs.python.org/2/howto/logging.html#logging-to-a-file中间,列出了以下内容:
对
basicConfig()
的调用应该先于对debug()
、info()
等的调用。由于它是一次性的简单配置工具,因此只有第一次调用才会实际执行任何操作:后续调用实际上是无操作的。
来源:https://docs.python.org/2/howto/logging.html logging-basic-tutorial
然而,Logger.setLevel()
也不能用于此。
下面的代码试图设置一个较低的日志级别:
logging.basicConfig(level=logging.DEBUG)
logging.debug("setting logging.basicConfig(level=logging.WARNING)")
logging.debug(myLogger.getEffectiveLevel())
logging.basicConfig(level=logging.WARNING) # This does nothing.
logging.getLogger('root').setLevel(level=logging.WARNING)
logging.debug(myLogger.getEffectiveLevel())
logging.debug("logger root, currently at "
+ str(logging.getLogger('root').getEffectiveLevel())
+ " is enabled for"
+ str(logging.getLogger('root').isEnabledFor(logging.DEBUG)))
结果如下:
DEBUG:root:setting logging.basicConfig(level=logging.WARNING)
DEBUG:root:10
DEBUG:root:30
DEBUG:root:30is enabled forFalse
似乎不能"set"
在没有访问logging.basicConfig()
创建的其他内容的情况下,将Logger设置为较低的冗长级别。Python脚本如何在执行中途更改其日志级别?
logging.disable(logging.INFO)
→在logging.INFO
禁用消息
logging.disable(logging.NOTSET)
→恢复正常日志记录
链接:https://docs.python.org/2/library/logging.html logging.disable
使用此命令临时限制日志输出。
它暂时覆盖所有记录器的日志级别。
如果需要关闭日志记录,请使用创造性命名的logging.shutdown()
首先,logging.basicConfig()
是一个构造函数,它创建一个StreamHandler对象来连接到根记录器。
日志级别只是整数常量,而不是Python脚本的魔法属性。
要实际更改特定记录器root
的级别,您可能需要访问logging.basicConfig()
为其创建的StreamHandler
。