log/logger.go (23 lines of code) (raw):
package log
import (
"context"
"os"
"github.com/sirupsen/logrus"
"gitlab.com/gitlab-org/labkit/correlation"
)
var logger = logrus.StandardLogger()
func init() { //nolint:gochecknoinits
// Enfore our own defaults on the logrus stdlogger
logger.Out = os.Stderr
logger.Formatter = &logrus.TextFormatter{}
logger.Level = logrus.InfoLevel
}
// ContextLogger will set the correlation id in the logger based on the context.
// This reference should not be held outside of the scope of the context.
func ContextLogger(ctx context.Context) *logrus.Entry {
return logger.WithFields(ContextFields(ctx))
}
// WithContextFields is a utility method for logging with context and fields.
func WithContextFields(ctx context.Context, fields Fields) *logrus.Entry {
return logger.WithFields(ContextFields(ctx)).WithFields(fields)
}
// ContextFields a logrus fields structure with the CorrelationID set.
func ContextFields(ctx context.Context) Fields {
correlationID := correlation.ExtractFromContext(ctx)
return logrus.Fields{correlation.FieldName: correlationID}
}