微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用 Structlog 获取最后一个日志值并将其作为变量传递给函数

如何解决使用 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 举报,一经查实,本站将立刻删除。