我目前有一个应用程序,它使用Castle Windsor作为Ioc。我现在想将log4net的日志框架更改为Serilog。
以下配置log4net的内容:
IocManager.Instance.IocContainer.AddFacility<LoggingFacility>(f => f.UseLog4Net().WithConfig("log4net.config"));
然而,没有UseSerilog()并且看看UseLog4Net()是如何实现的,它最终会调用:
LogUsing(LoggerImplementation.Log4net)
但是LoggerImplementation枚举没有Serilog成员。那么我如何告诉Castle使用Serilog作为我首选的日志框架?
答案 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>
。