我们使用第三方库在其新函数中接受*log.Logger (stdlib Logger)作为参数,但是我们自己实现了Logger。它与stdlib Logger具有相同的“接口”。
除了要求库所有者将参数类型更改为接口之外,是否有任何方法将我们自己的Logger实现传递给第三个库?
发布于 2016-04-10 05:10:33
如果他们的包使用了一个实际的*log.Logger,那么除了将log.Logger的输出设置为一个定制的编写器之外,没有什么可以做的了,您可以在那里拦截他们的日志语句,然后重新记录他们的日志。
但这将是次令人敬畏的,因为基本上您将解析他们的所有日志语句,以便您可以重新日志。不确定log.Logger是否将日志消息写为一个要写的调用。如果是这样的话,就会很容易,因为您所做的只是重新记录每个调用的写入。
您可能还想考虑找到另一个库,或者分叉并更改该库,因为没有任何东西真正依赖于log.Logger。
https://stackoverflow.com/questions/36525757
复制相似问题