在MassTransit 8版本中自动记录异常

后端开发 2026-07-09

我在使用MassTransit 8.5.8 + Amazon SQS/SNS,应用程序在Windows Docker容器中运行。

我之前从MassTransit v7切换过来,发现异常没有被记录到Sentry。早些时候,消费者中发生的所有未处理异常都会自动记录。

我这样注册Sentry Serilog日志记录器:

public static Container RegisterSerilog(this Container container)
{
    if (container == null)
        throw new ArgumentNullException(nameof(container));

    LoggerConfiguration loggerConfig;

    var options = GetDefaultSentryOptions();

    loggerConfig = new LoggerConfiguration()
                    .MinimumLevel.Error()
                    .WriteTo
                    .Sink(new SentrySink(options));

    container.RegisterSingleton<ILogger>(() => loggerConfig.CreateLogger());
    container.RegisterSingleton(() => new LoggerFactory().AddSerilog(container.GetInstance<ILogger>()));

    return container;
}

现在我需要在消费者内部显式调用 _logger.Error来记录异常。

我知道我可以创建一个过滤器,在 'try catch' 块中进行日志记录并将其分配给消费者,但在MassTransit 8中是否还有其他方式来配置日志记录器以自动记录异常?

解决方案

container.RegisterSingleton<ILoggerFactory>(() => new LoggerFactory().AddSerilog(container.GetInstance<ILogger>()));

你的容器没有解析到正确的类型。

站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。

相关文章