K8s: Add slog wrapper (#84680)
This commit is contained in:
@@ -1,9 +1,11 @@
|
||||
package options
|
||||
|
||||
import (
|
||||
"log/slog"
|
||||
"strconv"
|
||||
|
||||
"github.com/go-logr/logr"
|
||||
"github.com/grafana/grafana/pkg/infra/log"
|
||||
"github.com/grafana/grafana/pkg/infra/log/slogadapter"
|
||||
"github.com/spf13/pflag"
|
||||
genericapiserver "k8s.io/apiserver/pkg/server"
|
||||
"k8s.io/component-base/logs"
|
||||
@@ -36,10 +38,12 @@ func (o *ExtraOptions) Validate() []error {
|
||||
}
|
||||
|
||||
func (o *ExtraOptions) ApplyTo(c *genericapiserver.RecommendedConfig) error {
|
||||
logger := logr.New(newLogAdapter(o.Verbosity))
|
||||
klog.SetLoggerWithOptions(logger, klog.ContextualLogger(true))
|
||||
handler := slogadapter.New(log.New("grafana-apiserver"))
|
||||
logger := slog.New(handler)
|
||||
|
||||
klog.SetSlogLogger(logger)
|
||||
if _, err := logs.GlogSetter(strconv.Itoa(o.Verbosity)); err != nil {
|
||||
logger.Error(err, "failed to set log level")
|
||||
logger.Error("failed to set log level", "error", err)
|
||||
}
|
||||
c.ExternalAddress = o.ExternalAddress
|
||||
return nil
|
||||
|
||||
@@ -1,54 +0,0 @@
|
||||
package options
|
||||
|
||||
import (
|
||||
"strings"
|
||||
|
||||
"github.com/go-logr/logr"
|
||||
|
||||
"github.com/grafana/grafana/pkg/infra/log"
|
||||
)
|
||||
|
||||
var _ logr.LogSink = (*logAdapter)(nil)
|
||||
|
||||
type logAdapter struct {
|
||||
level int
|
||||
log log.Logger
|
||||
}
|
||||
|
||||
func newLogAdapter(level int) *logAdapter {
|
||||
return &logAdapter{log: log.New("grafana-apiserver"), level: level}
|
||||
}
|
||||
|
||||
func (l *logAdapter) WithName(name string) logr.LogSink {
|
||||
l.log = l.log.New("name", name)
|
||||
return l
|
||||
}
|
||||
|
||||
func (l *logAdapter) WithValues(keysAndValues ...any) logr.LogSink {
|
||||
l.log = l.log.New(keysAndValues...)
|
||||
return l
|
||||
}
|
||||
|
||||
func (l *logAdapter) Init(_ logr.RuntimeInfo) {
|
||||
// we aren't using the logr library for logging, so this is a no-op
|
||||
}
|
||||
|
||||
func (l *logAdapter) Enabled(level int) bool {
|
||||
return level <= l.level
|
||||
}
|
||||
|
||||
func (l *logAdapter) Info(level int, msg string, keysAndValues ...any) {
|
||||
msg = strings.TrimSpace(msg)
|
||||
// kubernetes uses level 0 for critical messages, so map that to Info
|
||||
if level == 0 {
|
||||
l.log.Info(msg, keysAndValues...)
|
||||
return
|
||||
}
|
||||
// every other level is mapped to Debug
|
||||
l.log.Debug(msg, keysAndValues...)
|
||||
}
|
||||
|
||||
func (l *logAdapter) Error(err error, msg string, keysAndValues ...any) {
|
||||
msg = strings.TrimSpace(msg)
|
||||
l.log.Error(msg, keysAndValues...)
|
||||
}
|
||||
Reference in New Issue
Block a user