我做了一个HTTP请求处理程序,它使用队列来允许它使用asyncio。在
class RequestsHandler(logging.Handler):
def __init__(self, loop):
self._queue = queue.Queue
loop.create_task(self._drain_loop())
def emit(self, record):
log_entry = self.format(record)
self._queue.put(log_entry)
async def _drain_loop(self):
while True:
log_entry = self._queue.get()
payload = {
'text': log_entry
}
await requests.post(
'https://example.com/foo/bar',
data=payload)
logger = logging.getLogger()
logger.setLevel(logging.DEBUG)
handler = RequestsHandler(loop=asyncio.get_event_loop())
handler.setLevel(logging.INFO)
logger.addHandler(handler)
但是,当我运行logger.info('a log message')
时,它返回:
同意Bills的回答,但是我建议您正确使用继承函数
super()
在empty
__init__()
中,可以使用参数level
定义处理程序的级别,例如level = logging.WARNING
。。。在您的
RequestHandler
构造函数应该调用logging.Handler
构造函数。在这又会调用
Filterer
构造函数,它将filters
属性初始化为空列表。在相关问题 更多 >
编程相关推荐