diff --git a/src/WorkflowCore/Interface/IWorkflowMiddlewareErrorHandler.cs b/src/WorkflowCore/Interface/IWorkflowMiddlewareErrorHandler.cs index 5522bae39..573edad21 100644 --- a/src/WorkflowCore/Interface/IWorkflowMiddlewareErrorHandler.cs +++ b/src/WorkflowCore/Interface/IWorkflowMiddlewareErrorHandler.cs @@ -1,5 +1,6 @@ using System; using System.Threading.Tasks; +using WorkflowCore.Models; namespace WorkflowCore.Interface { @@ -11,8 +12,9 @@ public interface IWorkflowMiddlewareErrorHandler /// /// Asynchronously handle the given exception. /// + /// Workflow instance where error happened /// The exception to handle /// A task that completes when handling is done. - Task HandleAsync(Exception ex); + Task HandleAsync(WorkflowInstance workflowInstance, Exception ex); } } diff --git a/src/WorkflowCore/Services/DefaultWorkflowMiddlewareErrorHandler.cs b/src/WorkflowCore/Services/DefaultWorkflowMiddlewareErrorHandler.cs index 99c4652ff..15946f097 100644 --- a/src/WorkflowCore/Services/DefaultWorkflowMiddlewareErrorHandler.cs +++ b/src/WorkflowCore/Services/DefaultWorkflowMiddlewareErrorHandler.cs @@ -2,6 +2,7 @@ using System.Threading.Tasks; using Microsoft.Extensions.Logging; using WorkflowCore.Interface; +using WorkflowCore.Models; namespace WorkflowCore.Services { @@ -21,11 +22,12 @@ public DefaultWorkflowMiddlewareErrorHandler(ILogger /// Asynchronously handle the given exception. /// + /// Workflow instance where error happened /// The exception to handle /// A task that completes when handling is done. - public Task HandleAsync(Exception ex) + public Task HandleAsync(WorkflowInstance workflowInstance, Exception ex) { - _log.LogError(ex, "An error occurred running workflow middleware: {Message}", ex.Message); + _log.LogError(ex, "An error occurred running workflow '{workflow}' middleware: {Message}", workflowInstance.Id, ex.Message); return Task.CompletedTask; } } diff --git a/src/WorkflowCore/Services/WorkflowMiddlewareRunner.cs b/src/WorkflowCore/Services/WorkflowMiddlewareRunner.cs index 6eb6968b8..e33efdc1a 100644 --- a/src/WorkflowCore/Services/WorkflowMiddlewareRunner.cs +++ b/src/WorkflowCore/Services/WorkflowMiddlewareRunner.cs @@ -71,7 +71,7 @@ public async Task RunPostMiddleware(WorkflowInstance workflow, WorkflowDefinitio var typeInstance = scope.ServiceProvider.GetService(errorHandlerType); if (typeInstance != null && typeInstance is IWorkflowMiddlewareErrorHandler handler) { - await handler.HandleAsync(exception); + await handler.HandleAsync(workflow, exception); } } } diff --git a/test/WorkflowCore.UnitTests/Services/WorkflowMiddlewareRunnerTests.cs b/test/WorkflowCore.UnitTests/Services/WorkflowMiddlewareRunnerTests.cs index 991acfb23..eed776895 100644 --- a/test/WorkflowCore.UnitTests/Services/WorkflowMiddlewareRunnerTests.cs +++ b/test/WorkflowCore.UnitTests/Services/WorkflowMiddlewareRunnerTests.cs @@ -265,7 +265,7 @@ private static Expression> HandleMethodFor(IWorkflowMiddleware middle A._); private static Expression> HandleMethodFor(IWorkflowMiddlewareErrorHandler errorHandler) => - () => errorHandler.HandleAsync(A._); + () => errorHandler.HandleAsync(A._, A._); public interface IDefLevelErrorHandler : IWorkflowMiddlewareErrorHandler {