Golang Go语言中如何禁用第三方库的 logger

使用的第三方库中有打印日志,但我并不关心这个错误,该怎么忽律它呢,类似于 python 中的 disable_existing_loggers
Golang Go语言中如何禁用第三方库的 logger

13 回复

打到自己的日志系统里面

更多关于Golang Go语言中如何禁用第三方库的 logger的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


首先确认这个库是否有日志关闭开关
如果实在没有,那么 fork 这个库,自己改下,然后引用你自己改的

一般规范的库都是有自定义 logger 的功能的。

某些没什么概念的初级开发者很多时候会用 log 库,这个可以通过 https://golang.org/pkg/log/#SetOutput 设置

某些一点概念都不懂的,只能自己手工改了

贴出这个第三方库,就知道怎么帮你了

thirft-go,用的就是标准库的 log,现在就是 log.SetOutput(ioutil.Discard),然后再实现自己的 app_logger 了

如果是 apache 的,看了一下就没几个 log,还都是错误提示,无所谓的吧

因为服务前面还有个阿里云负载,会不停的做心跳检查,但它只做三次握手,然后发送 RST 包主动关闭连接,所以我后台服务会疯狂报 connection reset by peer

其实更合理的是,我得写个正则什么的过滤这种 log,但不知道应该放在哪里好,如果直接在源码里改,编译环境一换有可能忘记

你实现一个 io.Writer 即可…

不能关掉日志输出??

看代码,看你用的这个包支不支持让你关掉日志

这种事情在 golang 里一般不允许出现。说明你的第三方库写的太恶心人了。

在Go语言中,禁用第三方库的logger通常不是直接通过语言特性来实现的,因为Go语言本身不提供直接控制第三方库日志输出的机制。不过,你可以通过以下几种方法来达到类似的效果:

  1. 配置第三方库:许多第三方库允许你通过配置来控制日志输出。查阅该库的文档,看是否有禁用日志输出的选项。例如,一些库可能允许你将日志级别设置为“None”或“Off”。

  2. 重定向日志输出:如果第三方库没有提供禁用日志的选项,你可以尝试将日志输出重定向到一个空设备(如/dev/null在Unix系统上)或一个自定义的日志处理器,该处理器不执行任何操作。

  3. 使用构建标签:如果第三方库的日志输出是通过编译时条件控制的,你可以尝试使用Go的构建标签来排除日志相关的代码。这通常需要对库的源代码进行修改,或者找到一种方法来在构建时替换掉日志相关的部分。

  4. 联系库的维护者:如果上述方法都不可行,你可以考虑联系第三方库的维护者,询问是否有计划添加禁用日志的功能,或者是否可以提供一种方法来禁用日志输出。

请注意,禁用第三方库的日志可能会隐藏重要的调试信息或错误消息,因此在生产环境中禁用日志之前,请确保你已经充分测试了应用程序,并且确信不需要这些日志信息。在生产环境中,通常建议将日志输出到文件或日志管理系统,以便进行监控和故障排除。

回到顶部