在MassTransit 8版本中自动记录异常
我在使用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导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。