如何解决使用 Structlog 获取最后一个日志值并将其作为变量传递给函数
目前我正在尝试实现一个函数调用,该函数调用将失败的消息从转换器发送到带有 Kafka 的 DLQ 主题。作为 DLQ 消息的一部分,我想包括我们也记录的异常错误。
代码:
except json.decoder.JSONDecodeError:
log.error('Failed to parse json',topic=msg.topic(),partition=msg.partition(),offset=msg.offset()
)
produce_dlq_message(converters.get("DLQ"),msg,error_message)
我需要获取最新的 log.error() 调用的值并将其分配给变量:error_message
我在另一个异常块中调用了这个完全相同的函数,但它在 log.error() 调用中具有不同的值,所以我需要一些获取最后/最新错误消息的东西。
解决方法
虽然可能有办法通过 multistructlog、处理器等实现这一点,但我建议走低技术路线:
try:
...
except json.decoder.JSONDecodeError:
em = {
"event": "failed to parse json","topic": msg.topic(),"partition": msg.partition(),"offset": msg.offset(),}
log.error(**em)
produce_dlq_message(converters.get("DLQ"),msg,json.dumps(em))
这意味着 em
被序列化了两次,但我认为整体上的简单性使它值得。
我最终使用了这个解决方案。
try:
...
except json.decoder.JSONDecodeError as e:
log.error("failed to parse json",topic=msg.topic(),partition=msg.partition(),offset=msg.offset(),)
error_message = str(e)
produce_dlq_message(converters.get("DLQ"),error_message)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。