我正在努力寻找如何分离来自不同包裹的日志。
示例:
package main
import (
"log"
"github.com/org/verbose"
)
func main() {
log.Print("Hello World")
verbose.DoSomething() // Which will generate a lot log messages
}
我知道我可以启用标记log.Llongfile
,然后日志中的每一行都将包含文件的完整路径,其中包含来自的日志消息。然而,这仍然意味着我需要进行一些后期处理,以便从该单个文件中过滤掉我不想要的以及我想要的内容。
我希望已经实时进行过滤,因此我最终得到verbose-lib.log
和my-app.log
或类似内容。
我正在寻找一种适用于大多数现有OSS软件包的解决方案 - 即我不能以任何我想要的方式更改这些库中的日志记录机制,因此我认为自定义日志记录库不在游戏中。 / p>
答案 0 :(得分:2)
如果软件包向您公开其记录器,您可以为其创建一个带有前缀的新记录器:
package main
import (
"log"
"os"
"example.com/lib/foo"
)
func main() {
foo.Logger := log.New(os.Stderr, "libfoo: ", log.LstdFlags)
// Do stuff.
}
这样,foo
的邮件将如下所示:
libfoo: 2015/09/14 17:04:52 Something's happened!
此外,log.New
接受io.Writer
,因此您可以打开任何文件并将其直接写入。