场景: 使用的包有 log.Println ,我自己的主程序也有。我有自己的日志格式输出等。但是三方包或内置包自己的 logPrintln 看的很烦。。。
比如:
http 包。有大量的logf(*request,format,...any)
的调用,当然可以通过 server{ErrorLog 接管。但是有的包是不提供 log 接管。即便提供接管,有些 log 我不 care 不想让他显示在屏幕上或者日志文件里。
这种情况,有没有什么办法能强制的所有的 log(write stdout/err)必须走某一个 func 过滤一遍?
1
Buges 2022-06-22 14:49:08 +08:00 via Android
没办法,go 的 log 库默认用自带的 logger ,不能改,用别的 logger 得显示指定。tracing 那种才是正确的方式,都统一用一种接口产生 log ,subscriber 由 app 开发者自己指定。
|
3
janxin 2022-06-22 14:59:26 +08:00
一般是放到 stdout, stderr 的话,比较邪典的做法是使用 syscall.Dup2 重定向 fd
|