in grpc-xds/control-plane-go/pkg/interceptors/logging.go [81:113]
func interceptorLogger(l logr.Logger) logging.Logger {
return logging.LoggerFunc(func(_ context.Context, lvl logging.Level, msg string, fields ...any) {
if fields == nil {
fields = make([]any, 0)
}
protoMarshalOptions := protojson.MarshalOptions{
Multiline: true,
Indent: " ",
AllowPartial: true,
}
for i, field := range fields {
if message, ok := field.(proto.Message); ok {
messageJSONBytes, err := protoMarshalOptions.Marshal(message)
if err == nil {
fields[i] = string(messageJSONBytes)
}
}
}
l := l.WithCallDepth(interceptorLoggerCallDepth).WithValues(fields...)
switch lvl {
case logging.LevelDebug:
l.V(debugVerbosity).Info(msg)
case logging.LevelInfo:
l.V(infoVerbosity).Info(msg)
case logging.LevelWarn:
l.V(warnVerbosity).Info(msg)
case logging.LevelError:
l.V(errorVerbosity).Error(nil, msg)
default:
panic(fmt.Sprintf("unknown level %v", lvl))
}
})
}