in grpc-xds/greeter-go/pkg/greeter/intermediary.go [63:83]
func logGreeterError(logger logr.Logger, err error, message string, keysAndValues ...interface{}) {
s, ok := status.FromError(err)
if !ok {
logger.Error(err, message, keysAndValues...)
return
}
keysAndValues = append(keysAndValues, "code", s.Code().String(), "message", s.Message())
for _, detail := range s.Details() {
if message, ok := detail.(proto.Message); ok {
messageJSONBytes, err := protojson.Marshal(message)
if err != nil {
logger.Error(err, "Could not marshal status detail to JSON")
} else {
// Log error detail if we can marshal it to JSON
key := string(message.ProtoReflect().Descriptor().Name())
keysAndValues = append(keysAndValues, key, string(messageJSONBytes))
}
}
}
logger.Error(err, message, keysAndValues...)
}