如何在python中破坏最后一个日志对象

如何在python中破坏最后一个日志对象,python,python-3.x,logging,Python,Python 3.x,Logging,考虑: 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, for

考虑:

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

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

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

我不确定您是否可以这样做。尝试将
force=True
添加到
basicConfig
中,但
shutdown
特别警告应在应用程序退出时调用此命令,并且在调用后不应再使用日志系统。关于
shutdown
:“通过冲洗和关闭所有处理程序,通知日志记录系统执行有序关机。这应该在应用程序退出时调用,并且在此调用之后不应再使用日志系统。”