【问题标题】:Logrus logger pointer to specific log level指向特定日志级别的 Logrus 记录器指针
【发布时间】:2023-03-21 10:42:01
【问题描述】:

我正在使用 MQTT paho 库,它有自己的 logger 接口,由 logrus logger 实现,paho 库有多个级别:ERROR、CRITICAL 等。 我试图做这样的事情:

    MQTT.ERROR = app.Log.WithField("level","ERROR")
    MQTT.CRITICAL = app.Log.WithField("level","CRITICAL")

但这不会记录,因为你不能有一个名为 level 的字段,如果你不添加 level,它总是进入 info 级别,因为 entry.Print 是在里面做 log.Info 的实现,有没有办法将指针传递给具有相应日志级别的 logrus 记录器,而无需围绕它创建新的包装器。

我知道这可以通过新包来实现,该包将实现 mqtt.Logger 并具有内部将调用 log.Error 的函数。但我觉得应该有更好的方法来做到这一点。

【问题讨论】:

  • 这听起来像是 XY 问题。您要达到的最终目标是什么?

标签: go logrus


【解决方案1】:

我知道可以使用将实现的新包来完成 mqtt.Logger 具有内部将调用 log.Error 的函数。但 我觉得应该有更好的方法来做到这一点。

它不必在新包中,您只需定义一个结构并使其在同一个包中实现mqtt.Logger

恐怕没有更好的办法了

【讨论】:

  • 是的,确实可以定义,但是我在想也许有办法用logrus来做,也许我会戳logrus并尝试做一个PR,有一个似乎很有用“引用”具有特定级别的记录器的方法。我试过用钩子做实验,但那是完全错误的想法。
猜你喜欢
  • 2019-01-07
  • 2019-02-14
  • 2014-10-22
  • 2023-04-01
  • 1970-01-01
  • 2020-11-19
  • 2011-05-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多