Documentation ¶
Overview ¶
Package nrlogrusplugin decorates logs for sending to the New Relic backend.
Use this package if you want to enable the New Relic logging product and see your log messages in the New Relic UI.
Since Logrus is completely api-compatible with the stdlib logger, you can replace your `"log"` imports with `log "github.com/sirupsen/logrus"` and follow the steps below to enable the logging product for use with the stdlib Go logger.
Using `logger.WithField` (https://godoc.org/github.com/sirupsen/logrus#Logger.WithField) and `logger.WithFields` (https://godoc.org/github.com/sirupsen/logrus#Logger.WithFields) is supported. However, if the field key collides with one of the keys used by the New Relic Formatter, the value will be overwritten. Reserved keys are those found in the `logcontext` package (https://godoc.org/github.com/Easypay/go-agent/_integrations/logcontext/#pkg-constants).
Supported types for `logger.WithField` and `logger.WithFields` field values are numbers, booleans, strings, and errors. Func types are dropped and all other types are converted to strings.
Requires v1.4.0 of the Logrus package or newer.
Configuration ¶
For the best linking experience be sure to enable Distributed Tracing:
cfg := NewConfig("Example Application", "__YOUR_NEW_RELIC_LICENSE_KEY__") cfg.DistributedTracer.Enabled = true
To enable log decoration, set your log's formatter to the `nrlogrusplugin.ContextFormatter`
logger := log.New() logger.SetFormatter(nrlogrusplugin.ContextFormatter{})
or if you are using the logrus standard logger
log.SetFormatter(nrlogrusplugin.ContextFormatter{})
The logger will now look for a newrelic.Transaction inside its context and decorate logs accordingly. Therefore, the Transaction must be added to the context and passed to the logger. For example, this logging call
logger.Info("Hello New Relic!")
must be transformed to include the context, such as:
ctx := newrelic.NewContext(context.Background(), txn) logger.WithContext(ctx).Info("Hello New Relic!")
Troubleshooting ¶
When properly configured, your log statements will be in JSON format with one message per line:
{"message":"Hello New Relic!","log.level":"info","trace.id":"469a04f6c1278593","span.id":"9f365c71f0f04a98","entity.type":"SERVICE","entity.guid":"MTE3ODUwMHxBUE18QVBQTElDQVRJT058Mjc3MDU2Njc1","hostname":"my.hostname","timestamp":1568917432034,"entity.name":"Example Application"}
If the `trace.id` key is missing, be sure that Distributed Tracing is enabled and that the Transaction context has been added to the logger using `WithContext` (https://godoc.org/github.com/sirupsen/logrus#Logger.WithContext).
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type ContextFormatter ¶
type ContextFormatter struct{}
ContextFormatter is a `logrus.Formatter` that will format logs for sending to New Relic.