为了账号安全,请及时绑定邮箱和手机立即绑定

Golang Logger 多态性?

Golang Logger 多态性?

Go
四季花海 2022-01-04 10:30:11
我们使用第三方库,它接受*log.Logger(stdlib Logger) 作为其 New 函数中的参数,但我们自己实现Logger。它与 stdlib Logger 具有相同的“接口”。除了要求库所有者将参数类型更改为接口之外,是否有任何hack方法可以将我们自己的Logger实现传递给第三个库?
查看完整描述

1 回答

?
慕姐4208626

TA贡献1852条经验 获得超7个赞

如果他们的包采用实际的 *log.Logger,除了将 log.Logger 的输出设置为自定义编写器,您可以在其中拦截他们的日志语句,然后通过您的语句重新记录它们,否则您无法注入自己的记录器.

但这将是次要的,因为您基本上会解析他们所有的日志语句,以便您可以重新登录。不确定 log.Logger 是否将日志消息写为对 Write 的一次调用。如果是这样,这很容易,因为您所做的就是为每次 Write 调用重新登录。

您可能还想考虑寻找另一个库或分叉和更改该库,因为没有什么应该像那样真正依赖 log.Logger。


查看完整回答
反对 回复 2022-01-04
  • 1 回答
  • 0 关注
  • 119 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信