Improve error handling and logging in batch rec actions

Add ILogger support to InvokeRecActionViewsCommandHandler for enhanced error and warning logging. Log and continue on handled exceptions when appropriate, and rethrow for critical errors. Clean up and reorder using directives. This increases robustness and traceability during batch rec action processing.
This commit is contained in:
2026-03-25 10:25:52 +01:00
parent 405b5f3ab1
commit 08c0d29d84

View File

@@ -1,5 +1,6 @@
using DigitalData.Core.Abstractions.Interfaces;
using MediatR;
using MediatR;
using Microsoft.Extensions.Logging;
using ReC.Application.Common.Exceptions;
using ReC.Application.RecActions.Queries;
using ReC.Domain.Constants;
@@ -10,7 +11,7 @@ public record InvokeBatchRecActionViewsCommand : IRequest
public long ProfileId { get; init; }
}
public class InvokeRecActionViewsCommandHandler(ISender sender) : IRequestHandler<InvokeBatchRecActionViewsCommand>
public class InvokeRecActionViewsCommandHandler(ISender sender, ILogger<InvokeRecActionViewsCommandHandler>? logger = null) : IRequestHandler<InvokeBatchRecActionViewsCommand>
{
public async Task Handle(InvokeBatchRecActionViewsCommand request, CancellationToken cancel)
{
@@ -22,11 +23,24 @@ public class InvokeRecActionViewsCommandHandler(ISender sender) : IRequestHandle
{
await sender.Send(new InvokeRecActionViewCommand() { Action = action }, cancel);
}
catch
catch (RecActionException ex)
{
switch (action.ErrorAction)
{
case ErrorAction.Continue:
logger?.LogWarning(ex, "Rec action failed but continuing. ActionId: {ActionId}, ProfileId: {ProfileId}", ex.ActionId, ex.ProfileId);
break;
default:
// Rethrow the exception to stop processing further actions
throw;
}
}
catch (Exception ex)
{
switch (action.ErrorAction)
{
case ErrorAction.Continue:
logger?.LogError(ex, "Unexpected error during rec action. ActionId: {ActionId}, ProfileId: {ProfileId}", action.Id, action.ProfileId);
break;
default:
// Rethrow the exception to stop processing further actions