我对.NET堆栈有些新意,我想知道.NET平台是否有等价的slf4j。对我来说,记录到Facade并能够根据需要交换日志记录实现是有道理的。此外,当我需要使用针对我没有使用的单个日志记录框架编码的第三方库时,slf4j中可用的包装器API已经多次保存了我。
是否有一个项目作为log4net,nLog和Enterprise Library等记录器之间的外观?是否有包装器允许我快速调用这些库并将它们引导到另一个库?我应该开始一个开源项目来自己做吗?这个问题是否重复,因为我不知道正确的问题?相反,使用面向方面编程的常用方法是什么?
答案 0 :(得分:20)
借口我用过这个东西,我忘了它不是Apache版本。它实际上是开源的,是一个名为common infrastructure的项目的一部分。它也被称为common logging。它适用于MS Enterprise,log4net等。效果很好。
答案 1 :(得分:10)
看看温莎城堡Logging Facility。
基本代码为here。 Log4net适配器here。 NLog适配器here。
为Serilog添加了适配器。
没有适配器,可以使用ConsoleLogger,DiagnosticsLogger,StreamLogger和NullLogger。
将适配器编写到任何其他日志框架非常容易。
答案 2 :(得分:9)
我正在合并Simple Logging Facade,因为它似乎支持The Object Guy's Logging Framework for .Net开箱即用。
答案 3 :(得分:5)
我遇到了同样的问题。完成上述建议后,我发现了 Ninject.Extensions.Logging
这很棒,因为无论如何,外观最好与DI结合使用
附带 NLog,NLog2&的代理。 log4net的强>
以下是如何将其与NLog结合使用的一个很好的示例: http://blog.tonysneed.com/2011/10/09/using-nlog-with-dependency-injection/
我明白,这个问题已经有几年了,但由于其他用户的完整性,我仍然选择发布这个“解决方案”
答案 4 :(得分:4)
由于这是写的,另一个有趣的日志包装器Fody.Anotar已经出现了。截至今天,它可能是所有这些中最完整的。大多数其他的,但Logging Faciliy,已经过时了,只支持最老的记录器。
它具有适用于NLog,Log4Net,Serilog,CommongLogging,Catel,LibLog,MetroLog,NServiceBus和Splat的适配器,并允许您为自己的库创建适配器。
您可以使用Nuget进行安装。寻找Anotar。* .Fody包,例如Anotar.NLog.Fody。
答案 5 :(得分:4)
.NET Core更新:
答案 6 :(得分:0)
我以某种方式发现这里的所有解决方案都不尽如人意,特别是对于库/ API。虽然我从没想过会这么做,但实际上我写了一个开源"记录器"应该处理大多数问题。
也许你可以查看Dapplo.Log,你可以从NuGet获得它。
我们的想法是在您的库中使用Dapplo.Log,而使用它的项目可以将任何日志输出指向(如果需要)到他们选择的记录器。可以在测试中找到指导输出的示例,以及一些主要框架的实现here。
它可能不完美(还),我欢迎拉动请求或门票。