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
{