我正在继承FileHandler来编写一个生成正确xml文件的处理程序(意思是,只有在程序正在运行时,才会完成)。
我所做的是:
<Diag>
元素开头),<line />
元素
</Diag>
元素写得更近。如果Logger.removeHandler会在被删除的处理程序中调用一些特殊的回调,那将是很好的,但我找不到任何回调。也许它不存在......
答案 0 :(得分:2)
处理程序在记录器中添加或删除时会被 通知。记录器使用处理程序,但处理程序对记录器一无所知。
但是,处理程序具有close()
方法,该方法在程序退出时由logging.shutdown()
(在atexit
注册)调用,因此您可以在那里添加逻辑。只需记住调用基本实现的close()
以确保正确的内务管理:
class MyHandler(logging.Handler):
def close(self):
# Write XML epilog.
# ...
super(MyHandler, self).close()