mirror of
https://github.com/nais/wonderwall.git
synced 2026-05-20 07:12:48 +00:00
55 lines
1.1 KiB
Go
55 lines
1.1 KiB
Go
package observability
|
|
|
|
import (
|
|
"fmt"
|
|
"time"
|
|
|
|
log "github.com/sirupsen/logrus"
|
|
"github.com/uptrace/opentelemetry-go-extra/otellogrus"
|
|
)
|
|
|
|
func textFormatter() log.Formatter {
|
|
return &log.TextFormatter{
|
|
DisableTimestamp: false,
|
|
FullTimestamp: true,
|
|
TimestampFormat: time.RFC3339Nano,
|
|
}
|
|
}
|
|
|
|
func jsonFormatter() log.Formatter {
|
|
return &log.JSONFormatter{
|
|
TimestampFormat: time.RFC3339Nano,
|
|
}
|
|
}
|
|
|
|
func SetupLogger(level, format string) error {
|
|
switch format {
|
|
case "json":
|
|
log.SetFormatter(jsonFormatter())
|
|
case "text":
|
|
log.SetFormatter(textFormatter())
|
|
default:
|
|
return fmt.Errorf("log format '%s' is not recognized", format)
|
|
}
|
|
|
|
logLevel, err := log.ParseLevel(level)
|
|
if err != nil {
|
|
return fmt.Errorf("while setting log level: %s", err)
|
|
}
|
|
|
|
log.SetLevel(logLevel)
|
|
log.Tracef("Trace logging enabled")
|
|
|
|
// Add OpenTelemetry logging hook.
|
|
// This attaches logs to the associated span in the given log context as events.
|
|
log.AddHook(otellogrus.NewHook(otellogrus.WithLevels(
|
|
log.PanicLevel,
|
|
log.FatalLevel,
|
|
log.ErrorLevel,
|
|
log.WarnLevel,
|
|
log.InfoLevel,
|
|
)))
|
|
|
|
return nil
|
|
}
|