使用Serilog与Castle Windsor LoggingFacility

时间:2016-04-12 04:13:42

标签: c# castle-windsor

我目前有一个应用程序,它使用Castle Windsor作为Ioc。我现在想将log4net的日志框架更改为Serilog。

以下配置log4net的内容:

IocManager.Instance.IocContainer.AddFacility<LoggingFacility>(f => f.UseLog4Net().WithConfig("log4net.config"));

然而,没有UseSerilog()并且看看UseLog4Net()是如何实现的,它最终会调用:

LogUsing(LoggerImplementation.Log4net)

但是LoggerImplementation枚举没有Seri​​log成员。那么我如何告诉Castle使用Serilog作为我首选的日志框架?

1 个答案:

答案 0 :(得分:0)

我们没有在枚举中使用Serilog成员发布新版本的Windsor,但是如果查看LoggingFacility的实现,您会看到枚举成员(例如log4net)我们只是通过反思加载。

您可以轻松使用LogUsing<T>()提供Castle Core提供的SerilogFactory

var container = new WindsorContainer();
container.AddFacility<LoggingFacility>(f => f.LogUsing<SerilogFactory>());

我们还在Windsor 4.1.0中弃用了Logging Facility的LoggerImplementation枚举,推荐使用LogUsing<T>