【发布时间】:2021-08-13 11:25:46
【问题描述】:
我有这个控制台应用程序项目,我将 EF6 与 postgresql、Quartz 和 Mass 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