在执行Python程序时更改为logging.basicConfig(level=logging.DEBUG)



//,一行回答"我如何设置日志级别为调试?"通常是这样的:

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

相关内容

  • 没有找到相关文章

最新更新