【问题标题】:how can i destuct last logging object in python我如何在python中销毁最后一个日志对象
【发布时间】:2020-02-28 22:59:49
【问题描述】:

考虑:

import logging
In [6]: def foo():
   ...:     logging.basicConfig(level=logging.WARNING)
   ...:     logging.warning("logging message 1")
   ...:     logging.shutdown()
   ...: def bar():
   ...:     logging.basicConfig(level=logging.WARNING, format="%(asctime)-15s %(
   ...: levelname)-8s %(message)s")
   ...:     logging.warning("logging message 2")
   ...:     

In [7]: foo()
WARNING:root:logging message 1

In [8]: bar()
WARNING:root:logging message 2

但我希望看到:

In [7]: foo()
WARNING:root:logging message 1
In [8]: bar()
2020-02-29 01:42:54,995 WARNING  logging message 2

我的观点是,在第二个函数中,我希望有新格式的新日志对象,但它是第一个具有其格式的函数日志对象。

【问题讨论】:

  • 我不确定你能做到这一点。尝试将force=True 添加到basicConfigshutdown 特别警告这应该在应用程序退出时调用,并且在此调用之后不应进一步使用日志系统。
  • 关于shutdown:“通知日志系统通过刷新和关闭所有处理程序来执行有序关闭。这应该在应用程序退出时调用并且不应进一步使用日志系统在这次通话之后进行的。"

标签: python python-3.x logging


【解决方案1】:

在 foo 末尾添加logging.getLogger().handlers = [] 以获得所需的结果。关机不会重置日志系统,它只是清理它以退出。

【讨论】:

    猜你喜欢
    • 2017-06-29
    • 2012-02-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多