【问题标题】:Logging Mass Transit with Serilog使用 Serilog 记录公共交通
【发布时间】:2021-08-13 11:25:46
【问题描述】:

我有这个控制台应用程序项目,我将 EF6 与 postgresql、QuartzMass Transit 一起使用,作为 DI 我使用 Castle温斯多。该项目的目标是定期检查一个(或多个文件夹)中的新文件并处理它们(主要通过将数据存储在数据库中)。

我想使用日志服务进行调试,但遇到了 Serilog。我设法将其添加到 Quartz 和 EF,但将其添加到 Mass Transit 时遇到问题。

到目前为止我做了什么:

我已将 Serilog 添加为 Castle.Core.Logging 的日志记录

public void Install(IWindsorContainer container, IConfigurationStore store)
{
    container.Auto(Classes.FromThisAssembly());
    var factory = container.Resolve<ILoggerFactory>();
    container.AddFacility<LoggingFacility>(f => f.LogUsing(factory as SerilogFactory));
}

然后我使用 Logger Interceptor 将其添加到 EF 并使用 Serilog 设置添加到 Quartz。

但现在我想将它添加到我的 MassTransit Automatonymous,但我无法弄清楚。

首先,我尝试从 BusControl 配置中添加 Serilog:

BusControl = Bus.Factory.CreateUsingInMemory(cfg =>
{
    cfg.UseSerilog(Log.Logger);  //Where `Log.Logger` is the Serilog Logger
});

但后来我遇到了MassTransit.Logging.ILogger 异常,它也是discussed here

在那个线程中,我发现我应该添加 Serilog(或任何其他记录器)in a different way,通过像这样配置 MassTransit LogContext LogContext.ConfigureCurrentLogContext(loggerFactory);。但问题是,他们现在正在使用 Microsoft.Extensions.Logging.Abstractions,我无法将我的记录器从 Castle.Core.Logging.ILogger 转换为 Microsoft.Extensions.Logging.ILogger

有什么方法可以使用我的 Castle.Core.Logging 记录器吗?

【问题讨论】:

    标签: c# castle-windsor serilog masstransit


    【解决方案1】:

    您需要使用Serilog.Extensions.Logging NuGet 包,它为Serilog 添加了ILoggerFactory 支持。您可以通过该接口通过以下方式配置 MassTransit:

    LogContext.ConfigureCurrentLogContext(loggerFactory);
    

    MassTransit 不使用任何 Castle 设施,但是,有一个 NuGet 包用于使用]Castle Windsor](https://masstransit-project.com/usage/containers/castlewindsor.html) 配置 MassTransit。

    更新:您可以在this sample中查看示例 Serilog 配置

    【讨论】:

    • 这帮助我摆脱了错误,但没有记录任何内容。当我为状态机发布事件时,你有一个输出示例吗?
    • 您需要在创建总线之前或在总线配置块中调用此方法,以便在总线关闭执行完成后它可用。您可以在 Serilog (.MinimumLevel.Override("MassTransit", LogEventLevel.Debug) 中指定日志记录级别。
    • 是的,我以为我已经设置好了,但显然我有一次还原了更改并删除了该行。非常感谢您的帮助!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-11
    • 2017-05-18
    相关资源
    最近更新 更多