bade0a24ff | ||
---|---|---|
.. | ||
tracer | ||
v2 | ||
writer | ||
LICENSE | ||
README.md | ||
context.go | ||
entry.go | ||
go.mod | ||
go.sum | ||
levels.go | ||
log.go | ||
loggable.go | ||
metadata.go | ||
oldlog.go | ||
package.json |
README.md
go-log
The logging library used by go-ipfs
It currently uses a modified version of go-logging to implement the standard printf-style log output.
Install
go get github.com/ipfs/go-log
Usage
Once the package is imported under the name logging
, an instance of EventLogger
can be created like so:
var log = logging.Logger("subsystem name")
It can then be used to emit log messages, either plain printf-style messages at six standard levels or structured messages using Start
, StartFromParentState
, Finish
and FinishWithErr
methods.
Example
func (s *Session) GetBlock(ctx context.Context, c *cid.Cid) (blk blocks.Block, err error) {
// Starts Span called "Session.GetBlock", associates with `ctx`
ctx = log.Start(ctx, "Session.GetBlock")
// defer so `blk` and `err` can be evaluated after call
defer func() {
// tag span associated with `ctx`
log.SetTags(ctx, map[string]interface{}{
"cid": c,
"block", blk,
})
// if err is non-nil tag the span with an error
log.FinishWithErr(ctx, err)
}()
if shouldStartSomething() {
// log message on span associated with `ctx`
log.LogKV(ctx, "startSomething", true)
}
...
}
Tracing
go-log
wraps the opentracing-go methods - StartSpan
, Finish
, LogKV
, and SetTag
.
go-log
implements its own tracer - loggabletracer
- based on the basictracer-go implementation. If there is an active WriterGroup
the loggabletracer
will record span data to the WriterGroup
. An example of this can be seen in the log tail
command of go-ipfs
.
Third party tracers may be used by calling opentracing.SetGlobalTracer()
with your desired tracing implementation. An example of this can be seen using the go-jaeger-plugin
and the go-ipfs
tracer plugin
Contribute
Feel free to join in. All welcome. Open an issue!
This repository falls under the IPFS Code of Conduct.
Want to hack on IPFS?
License
MIT