logging - 具有文件记录可能性的可配置记录器

标签 logging go

我正在寻找 Go 中的日志库,类似于 java 中的 log4j。

  1. 据我了解,“log”包中的内置记录器在配置和日志级别方面的可能性受到限制。

  2. 也许有人使用了 https://godoc.org/github.com/op/go-logging 之一, https://github.com/cihub/seelog ?

  3. 并发问题呢?在系统中存储记录器的最佳方式是什么?每个程序一个还是每次都创建记录器?

谢谢!

最佳答案

std lib log 包为您处理了很多这样的事情。您可以通过以下方式记录到 STDOUT/STDERR 或设置日志包本身的输出:

log.SetOutput(<something that implements io.Writer>)
log.Println("some message")

并且根据 io.Writer 是什么(即 os.File、net.TCPConn、net.UDPConn 等),它会向其记录“一些消息”。

这也可以像这样在每个记录器的基础上完成

logger := log.New(<something that implements io.Writer>, <log prefix string>, <log flags https://golang.org/pkg/log/#pkg-constants>)
logger.Println("Some message")

这个例子将完成同样的事情,并为每个日志添加一个前缀。第二个示例是一个结构而不是包中的函数,因此必须正确地在 Goroutine 之间共享。这个例子可以通过让每个级别都是它自己的记录器实例来实现日志级别。

还值得一看 logrus https://github.com/Sirupsen/logrus它为您处理了很多样板文件。

关于logging - 具有文件记录可能性的可配置记录器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34180072/

相关文章:

tensorflow - 在项目中使用go模块时如何导入tensorflow go包?

mysql - 正确删除 Go 中的第二个 json.Marshal

java - 扩展 log4j/slf4j 记录器

node.js - 如何获取 dgraph-orm 中查询的 ' logs'

go - 替换go.sum中的字符串

google-app-engine - GAE Golang - log.Print()?

go - 本地运行 Go Tour 时出错 : Couldn't find tour files: could not find go-tour content; check $GOROOT and $GOPATH

logging - ELMAh中的​​ block 404 FavIco错误

java - 在 log4j2 中记录 PID 而不使用线程上下文

gwt - Java GWT remoteLoggingServlet - 我可以配置 java.util.Logging 以将其发送到日志文件吗?