Skip to content

Microsoft.Extensions.Logging.Console: should log Exception.Data #35922

@Davilink

Description

@Davilink

Is your feature request related to a problem? Please describe.

I add some data to my exception and i didn't see them in the Console.

var exceptions = new List<Exception>();
try
{
    await Task.WhenAll(queries);
}
catch(Exception)
{
    for (var j=0; j<queries.Count; j++)
    {
        if (queries[j].Exception?.InnerException != null)
        {
            var exception = queries[j].Exception!.InnerException!;
            // we add date for logging purpose
            exception.Data.Add("userTaskId", userTasksId[j]);
            exceptions.Add(exception);
        }
    }
}

if (exceptions.Any())
{
    throw _apiExceptionFactory.Create(
        await ProblemDetailsWithContextFactory(ApiErrors.UNKNOWN, StatusCodes.Status500InternalServerError, "", "Some reassignment failed."),
        new AggregateException(exceptions)
    );
}

// somewhere else
_loggerFactory.CreateLogger(exception.CategoryName)
                .Log(exception.LogLevel, exception, exception.ProblemDetails.Detail, exception.ProblemDetails.Extensions);

but when i go into the console, the output doesn't display the data.

fail: MyApp.Controllers.ReassignmentController[0]
      Some reassignment failed.
MyApp.Shared.Helper.ApiExceptions.ApiException`1[MyApp.Controllers.ReassignmentController]: Some reassignment failed.
 ---> System.AggregateException: One or more errors occurred. (Aucune connexion n’a pu être établie car l’ordinateur cible l’a expressément refusée.) (Aucune connexion n’a pu être établie car l’ordinateur cible l’a expressément refusée.) (Aucune connexion n’a pu être établie car l’ordinateur cible l’a expressément refusée.) (Aucune connexion n’a pu être établie car l’ordinateur cible l’a expressément refusée.) (Aucune connexion n’a pu être établie car l’ordinateur cible l’a expressément refusée.) (Aucune connexion n’a pu être établie car l’ordinateur cible l’a expressément refusée.) (Aucune connexion n’a pu être établie car l’ordinateur cible l’a expressément refusée.) (Aucune connexion n’a pu être établie car l’ordinateur cible l’a expressément refusée.) (Aucune connexion n’a pu être établie car l’ordinateur cible l’a expressément refusée.) (Aucune connexion n’a pu être établie car l’ordinateur cible l’a expressément refusée.)
 ---> System.Net.Http.HttpRequestException: Aucune connexion n’a pu être établie car l’ordinateur cible l’a expressément refusée.
 ---> System.Net.Sockets.SocketException (10061): Aucune connexion n’a pu être établie car l’ordinateur cible l’a expressément refusée.
   at System.Net.Http.ConnectHelper.ConnectAsync(String host, Int32 port, CancellationToken cancellationToken)
   --- End of inner exception stack trace ---
   at System.Net.Http.ConnectHelper.ConnectAsync(String host, Int32 port, CancellationToken cancellationToken)
   at System.Net.Http.HttpConnectionPool.ConnectAsync(HttpRequestMessage request, Boolean allowHttp2, CancellationToken cancellationToken)
   at System.Net.Http.HttpConnectionPool.CreateHttp11ConnectionAsync(HttpRequestMessage request, CancellationToken cancellationToken)
   at System.Net.Http.HttpConnectionPool.GetHttpConnectionAsync(HttpRequestMessage request, CancellationToken cancellationToken)
   at System.Net.Http.HttpConnectionPool.SendWithRetryAsync(HttpRequestMessage request, Boolean doRequestAuth, CancellationToken cancellationToken)
   at System.Net.Http.RedirectHandler.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
   at System.Net.Http.DiagnosticsHandler.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
   at Microsoft.Extensions.Http.Logging.LoggingHttpMessageHandler.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
   at Microsoft.Extensions.Http.Logging.LoggingScopeHttpMessageHandler.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
   at System.Net.Http.HttpClient.FinishSendAsyncBuffered(Task`1 sendTask, HttpRequestMessage request, CancellationTokenSource cts, Boolean disposeCts)
   at MyApp.CamundaClient.Implementations.UserTaskClient.SetAssignee(Boolean isAssignmentForced, Guid id, String userId, CancellationToken token) in C:\Users\MyUser\source\repos\MyRepo\MyApp.CamundaClient\Implementations\UserTaskClient.cs:line 287
   at MyApp.Controllers.ReassignmentController.UpdateAssignee(IList`1 userTasksId, String userId) in C:\Users\MyUser\source\repos\MyRepo\MyApp\Controllers\ReassignmentController.cs:line 280
   --- End of inner exception stack trace ---
 ---> (Inner Exception dotnet/extensions#1) System.Net.Http.HttpRequestException: Aucune connexion n’a pu être établie car l’ordinateur cible l’a expressément refusée.
 ---> System.Net.Sockets.SocketException (10061): Aucune connexion n’a pu être établie car l’ordinateur cible l’a expressément refusée.
   at System.Net.Http.ConnectHelper.ConnectAsync(String host, Int32 port, CancellationToken cancellationToken)
   --- End of inner exception stack trace ---
   at System.Net.Http.ConnectHelper.ConnectAsync(String host, Int32 port, CancellationToken cancellationToken)
   at System.Net.Http.HttpConnectionPool.ConnectAsync(HttpRequestMessage request, Boolean allowHttp2, CancellationToken cancellationToken)
   at System.Net.Http.HttpConnectionPool.CreateHttp11ConnectionAsync(HttpRequestMessage request, CancellationToken cancellationToken)
   at System.Net.Http.HttpConnectionPool.GetHttpConnectionAsync(HttpRequestMessage request, CancellationToken cancellationToken)
   at System.Net.Http.HttpConnectionPool.SendWithRetryAsync(HttpRequestMessage request, Boolean doRequestAuth, CancellationToken cancellationToken)
   at System.Net.Http.RedirectHandler.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
   at System.Net.Http.DiagnosticsHandler.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
   at Microsoft.Extensions.Http.Logging.LoggingHttpMessageHandler.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
   at Microsoft.Extensions.Http.Logging.LoggingScopeHttpMessageHandler.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
   at System.Net.Http.HttpClient.FinishSendAsyncBuffered(Task`1 sendTask, HttpRequestMessage request, CancellationTokenSource cts, Boolean disposeCts)
   at MyApp.CamundaClient.Implementations.UserTaskClient.SetAssignee(Boolean isAssignmentForced, Guid id, String userId, CancellationToken token) in C:\Users\MyUser\source\repos\MyRepo\MyApp.CamundaClient\Implementations\UserTaskClient.cs:line 287<---
 ---> (Inner Exception dotnet/extensions#2) System.Net.Http.HttpRequestException: Aucune connexion n’a pu être établie car l’ordinateur cible l’a expressément refusée.
 ---> System.Net.Sockets.SocketException (10061): Aucune connexion n’a pu être établie car l’ordinateur cible l’a expressément refusée.
   at System.Net.Http.ConnectHelper.ConnectAsync(String host, Int32 port, CancellationToken cancellationToken)
   --- End of inner exception stack trace ---
   ...

i was expecting that the console log provider would display someting like

fail: MyApp.Controllers.ReassignmentController[0]
      Some reassignment failed.
MyApp.Shared.Helper.ApiExceptions.ApiException`1[MyApp.Controllers.ReassignmentController]: Some reassignment failed.
 ---> System.AggregateException: One or more errors occurred. (Aucune connexion n’a pu être établie car l’ordinateur cible l’a expressément refusée.) (Aucune connexion n’a pu être établie car l’ordinateur cible l’a expressément refusée.) (Aucune connexion n’a pu être établie car l’ordinateur cible l’a expressément refusée.) (Aucune connexion n’a pu être établie car l’ordinateur cible l’a expressément refusée.) (Aucune connexion n’a pu être établie car l’ordinateur cible l’a expressément refusée.) (Aucune connexion n’a pu être établie car l’ordinateur cible l’a expressément refusée.) (Aucune connexion n’a pu être établie car l’ordinateur cible l’a expressément refusée.) (Aucune connexion n’a pu être établie car l’ordinateur cible l’a expressément refusée.) (Aucune connexion n’a pu être établie car l’ordinateur cible l’a expressément refusée.) (Aucune connexion n’a pu être établie car l’ordinateur cible l’a expressément refusée.)
 ---> System.Net.Http.HttpRequestException: Aucune connexion n’a pu être établie car l’ordinateur cible l’a expressément refusée.
 ---> System.Net.Sockets.SocketException (10061): Aucune connexion n’a pu être établie car l’ordinateur cible l’a expressément refusée.
   at System.Net.Http.ConnectHelper.ConnectAsync(String host, Int32 port, CancellationToken cancellationToken)
   --- End of inner exception stack trace ---
   at System.Net.Http.ConnectHelper.ConnectAsync(String host, Int32 port, CancellationToken cancellationToken)
   at System.Net.Http.HttpConnectionPool.ConnectAsync(HttpRequestMessage request, Boolean allowHttp2, CancellationToken cancellationToken)
   at System.Net.Http.HttpConnectionPool.CreateHttp11ConnectionAsync(HttpRequestMessage request, CancellationToken cancellationToken)
   at System.Net.Http.HttpConnectionPool.GetHttpConnectionAsync(HttpRequestMessage request, CancellationToken cancellationToken)
   at System.Net.Http.HttpConnectionPool.SendWithRetryAsync(HttpRequestMessage request, Boolean doRequestAuth, CancellationToken cancellationToken)
   at System.Net.Http.RedirectHandler.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
   at System.Net.Http.DiagnosticsHandler.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
   at Microsoft.Extensions.Http.Logging.LoggingHttpMessageHandler.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
   at Microsoft.Extensions.Http.Logging.LoggingScopeHttpMessageHandler.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
   at System.Net.Http.HttpClient.FinishSendAsyncBuffered(Task`1 sendTask, HttpRequestMessage request, CancellationTokenSource cts, Boolean disposeCts)
   at MyApp.CamundaClient.Implementations.UserTaskClient.SetAssignee(Boolean isAssignmentForced, Guid id, String userId, CancellationToken token) in C:\Users\MyUser\source\repos\MyRepo\MyApp.CamundaClient\Implementations\UserTaskClient.cs:line 287
   at MyApp.Controllers.ReassignmentController.UpdateAssignee(IList`1 userTasksId, String userId) in C:\Users\MyUser\source\repos\MyRepo\MyApp\Controllers\ReassignmentController.cs:line 280
   --- End of inner exception stack trace ---
 ---> (Inner Exception dotnet/extensions#1) System.Net.Http.HttpRequestException: Aucune connexion n’a pu être établie car l’ordinateur cible l’a expressément refusée.
 ---> System.Net.Sockets.SocketException (10061): Aucune connexion n’a pu être établie car l’ordinateur cible l’a expressément refusée.
   at System.Net.Http.ConnectHelper.ConnectAsync(String host, Int32 port, CancellationToken cancellationToken)
   --- End of inner exception stack trace ---
   at System.Net.Http.ConnectHelper.ConnectAsync(String host, Int32 port, CancellationToken cancellationToken)
   at System.Net.Http.HttpConnectionPool.ConnectAsync(HttpRequestMessage request, Boolean allowHttp2, CancellationToken cancellationToken)
   at System.Net.Http.HttpConnectionPool.CreateHttp11ConnectionAsync(HttpRequestMessage request, CancellationToken cancellationToken)
   at System.Net.Http.HttpConnectionPool.GetHttpConnectionAsync(HttpRequestMessage request, CancellationToken cancellationToken)
   at System.Net.Http.HttpConnectionPool.SendWithRetryAsync(HttpRequestMessage request, Boolean doRequestAuth, CancellationToken cancellationToken)
   at System.Net.Http.RedirectHandler.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
   at System.Net.Http.DiagnosticsHandler.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
   at Microsoft.Extensions.Http.Logging.LoggingHttpMessageHandler.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
   at Microsoft.Extensions.Http.Logging.LoggingScopeHttpMessageHandler.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
   at System.Net.Http.HttpClient.FinishSendAsyncBuffered(Task`1 sendTask, HttpRequestMessage request, CancellationTokenSource cts, Boolean disposeCts)
   at MyApp.CamundaClient.Implementations.UserTaskClient.SetAssignee(Boolean isAssignmentForced, Guid id, String userId, CancellationToken token) in C:\Users\MyUser\source\repos\MyRepo\MyApp.CamundaClient\Implementations\UserTaskClient.cs:line 287<---
    Data:
        userTaskId: {d69cd7a4-6e0b-11ea-93d6-94e6f7918376}
 ---> (Inner Exception dotnet/extensions#2) System.Net.Http.HttpRequestException: Aucune connexion n’a pu être établie car l’ordinateur cible l’a expressément refusée.
 ---> System.Net.Sockets.SocketException (10061): Aucune connexion n’a pu être établie car l’ordinateur cible l’a expressément refusée.
   at System.Net.Http.ConnectHelper.ConnectAsync(String host, Int32 port, CancellationToken cancellationToken)
   --- End of inner exception stack trace ---
   ...

Describe the solution you'd like

Add the Data field in the log.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions