internal static void RecordExecutionErrorsIfPresent(Span span, string errorType, IExecutionErrors executionErrors) { var errorCount = executionErrors?.Count ?? 0; if (errorCount > 0) { span.Error = true; span.SetTag(Trace.Tags.ErrorMsg, $"{errorCount} error(s)"); span.SetTag(Trace.Tags.ErrorType, errorType); span.SetTag(Trace.Tags.ErrorStack, ConstructErrorMessage(executionErrors)); } }
internal static void RecordExecutionErrorsIfPresent(Span span, string errorType, IExecutionErrors executionErrors) { var errorCount = executionErrors?.Count ?? 0; if (errorCount > 0) { var message = $"{errorCount} error(s)"; span.Status = SpanStatus.Error.WithDescription(message); span.SetTag(Trace.Tags.ErrorMsg, message); span.SetTag(Trace.Tags.ErrorType, errorType); span.SetTag(Trace.Tags.ErrorStack, ConstructErrorMessage(executionErrors)); } }
private static string ConstructErrorMessage(IExecutionErrors executionErrors) { if (executionErrors == null) { return(string.Empty); } var builder = new StringBuilder(); try { var tab = " "; builder.AppendLine("errors: ["); for (int i = 0; i < executionErrors.Count; i++) { var executionError = executionErrors[i]; builder.AppendLine($"{tab}{{"); var message = executionError.Message; if (message != null) { builder.AppendLine($"{tab + tab}\"message\": \"{message.Replace("\r", "\\r").Replace("\n", "\\n")}\","); } var path = executionError.Path; if (path != null) { builder.AppendLine($"{tab + tab}\"path\": \"{string.Join(".", path)}\","); } var code = executionError.Code; if (code != null) { builder.AppendLine($"{tab + tab}\"code\": \"{code}\","); } builder.AppendLine($"{tab + tab}\"locations\": ["); var locations = executionError.Locations; if (locations != null) { foreach (var location in locations) { if (location.TryDuckCast <ErrorLocationStruct>(out var locationProxy)) { builder.AppendLine($"{tab + tab + tab}{{"); builder.AppendLine($"{tab + tab + tab + tab}\"line\": {locationProxy.Line},"); builder.AppendLine($"{tab + tab + tab + tab}\"column\": {locationProxy.Column}"); builder.AppendLine($"{tab + tab + tab}}},"); } } } builder.AppendLine($"{tab + tab}]"); builder.AppendLine($"{tab}}},"); } builder.AppendLine("]"); } catch (Exception ex) { Log.Error(ex, "Error creating GraphQL error message."); return("errors: []"); } return(builder.ToString()); }
internal static void RecordExecutionErrorsIfPresent(Activity activity, string errorType, IExecutionErrors executionErrors) { var errorCount = executionErrors?.Count ?? 0; if (errorCount > 0) { activity.SetTag(Tags.Status, Status.Error); activity.SetTag(Tags.ErrorMsg, $"{errorCount} error(s)"); activity.SetTag(Tags.ErrorType, errorType); activity.SetTag(Tags.ErrorStack, ConstructErrorMessage(executionErrors)); } }