如何将记录网络事件的 python 日志记录食谱示例与 logging.config.listen 线程结合起来?

How can I combine the python logging cookbook example of logging network events with a logging.config.listen thread?

理论上这应该很简单。以此处的日志记录手册为例:

https://docs.python.org/3/howto/logging-cookbook.html#sending-and-receiving-logging-events-across-a-network

我想添加即时更改日志记录配置的功能。我只是补充说:

logging.config.dictConfig(...) # setup the root logger
config_thread = logging.config.listen()
config_thread.start()
tcpserver = LogRecordSocketReceiver()

并且在启动时,这与提供的通过网络将日志事件发送到套接字接收器的示例配合得很好。

但是,一旦我发送了新的配置,问题就出现了。之后日志服务器将不再生成任何日志消息。即使每个 handleLogRecord() 调用通过 logging.getLogger().

获得记录器的新实例,也会发生这种情况

关于我遗漏了什么有什么想法吗?

您需要确保在配置字典中,您已将 disable_existing_loggers 设置为 False。否则,当应用新配置时,现有记录器将被禁用并且不再产生任何输出。