我们使用第三方库接受*log.Logger
(stdlib Logger)作为其New函数中的参数,但我们自己实现Logger
。它具有相同的界面"使用stdlib Logger。
除了要求库所有者将参数类型更改为接口之外,是否有任何黑客方式将我们自己的Logger实现传递给第三个库?
答案 0 :(得分:1)
如果他们的软件包采用了一个实际的* log.Logger,除了将log.Logger的输出设置为自定义编写器,你可以截取他们的日志语句然后重新登录时,你无法注入自己的记录器他们通过你的。
但是这将是非常棒的,因为你基本上只是解析所有日志语句,因此你可以重新登录。不确定log.Logger是否将日志消息写为Write一次调用。如果是这样的话,那很容易,因为您所做的就是重新记录每次调用Write。
您可能还想考虑找到另一个库或分叉和更改该库,因为没有什么应该真正依赖于log.Logger。