我正在尝试使用日志记录的 memory handler将日志消息缓冲到我的实际日志记录处理程序。您可以通过使用一些参数实例化它来使用内存处理程序,如下所示:
import logging
buffered_handler = logging.handlers.MemoryHandler(capacity=5,target=myActualHandler)
但是,我不希望我的应用程序必须直接从日志中实例化一个处理程序,或者传递任何参数;我希望这段代码看起来像这样:
import myhandlers
buffered_handler = myhandlers.BufferedRemoteHandler()
问题是:我该怎么做?我想尝试实例化我的 BufferedRemoteHandler 以实际上返回带有一些特定参数的日志记录的 MemoryHandler。我想只是让 BufferedRemoteHandler 成为一个返回我想要的处理程序的函数;那是正确的方法吗?有没有一种方法可以创建一个类,当您实例化它时,实际上会返回一个完全不同的类?
请您参考如下方法:
也许 PEP 8 的第 3 点就是答案:
Simple is better than complex.
我会采用函数方式。不过,也许可以将其称为 get_handler()(或 get_buffered_remote_handler())之类的名称,这样您第一眼就会意识到它不是真正的类。
