func interceptorLogger()

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))
		}
	})
}