问题描述
我想使用 Python 的 logging.handlers.HTTPHandler 使用 POST 和 JSON 格式的日志事件发送日志事件。但是我不想诉诸于编写扩展 - 因此可以使用文件或代码来实现配置。我编写了以下代码来配置记录器并发送测试消息。正在接收事件但似乎没有将内容类型设置为 JSON
import logging,logging.handlers
testHandler = logging.handlers.HTTPHandler('localhost:18080','/test',method='POST')
log = logging.getLogger("me")
log.addHandler(testHandler)
log.warn ('{"beep":"beep"}')
我错过了一个配置吗?
解决方法
这是不可能的,尤其是当您使用 POST 方法时。 HTTPHandler 是 hardcoded,用于将所有 POST 请求的内容类型标头设置为 application/x-www-form-urlencoded
。
您能做的最好的事情是继承 HTTPHandler 并实现 emit()
方法的自定义版本。