~ruther/NosSmooth

df3d5df306b523200b6a6489dd3c38e9b92318ca — František Boháček 3 years ago 4aad2ad
feat: update result logging mechanism
1 files changed, 12 insertions(+), 5 deletions(-)

M Core/NosSmooth.Core/Extensions/ResultExtensions.cs
M Core/NosSmooth.Core/Extensions/ResultExtensions.cs => Core/NosSmooth.Core/Extensions/ResultExtensions.cs +12 -5
@@ 33,7 33,8 @@ public static class ResultExtensions

        using StringWriter stringWriter = new StringWriter();
        using IndentedTextWriter logTextWriter = new IndentedTextWriter(stringWriter, " ");
        logTextWriter.Write("Encountered an error: ");
        logTextWriter.WriteLine("Encountered an error");
        logTextWriter.Indent++;

        LogResultError(logTextWriter, result);
        logger.LogError(stringWriter.ToString());


@@ 67,8 68,9 @@ public static class ResultExtensions
            throw new InvalidOperationException("The result was successful, it has to be unsuccessful to log it.");
        }

        logTextWriter.WriteLine(result.Error.Message);
        AppendErrorMessage(logTextWriter, result.Error);
        IResultError? lastError = result.Error;
        logTextWriter.Indent++;
        while ((result = result?.Inner) is not null && result.Error is not null)
        {
            // ReSharper disable once PossibleUnintendedReferenceComparison


@@ 78,9 80,14 @@ public static class ResultExtensions
            }
            lastError = result.Error;

            logTextWriter.WriteLine("--- See the inner error ---");
            logTextWriter.Indent++;
            logTextWriter.WriteLine(result.Error.Message);
            // logTextWriter.Indent++;
            logTextWriter.Write("---> ");
            AppendErrorMessage(logTextWriter, result.Error);
        }
    }

    private static void AppendErrorMessage(IndentedTextWriter indentedTextWriter, IResultError error)
    {
        indentedTextWriter.WriteLine($"{error.GetType().FullName}: {error.Message}");
    }
}
\ No newline at end of file

Do not follow this link