46

我对 .NET 堆栈有点陌生,我想知道 .NET 平台是否有与slf4j等效的东西。对我来说,登录到 Facade 并能够根据需要交换日志实现是很有意义的。此外,当我需要使用针对我未使用的单个日志框架进行编码的第三方库时,slf4j 中可用的包装器 API 为我节省了很多时间。

是否有一个项目可以充当 log4net、nLog 和 Enterprise Library 等记录器之间的门面?是否有允许我快捷调用这些库并将它们定向到另一个库的包装器?我应该自己启动一个开源项目来做这件事吗?这个问题是重复的,因为我不知道正确的提问方式吗?相反,使用面向方面编程的常用方法是什么?

4

7 回答 7

20

对不起,我用了这个东西,我忘了它不是 Apache 版本。它实际上是开源的,是一个称为通用基础设施的项目的一部分。它也称为通用日志记录。它适用于 MS Enterprise、log4net 等。它运作良好。

于 2010-04-28T22:30:22.090 回答
10

看看温莎城堡测井设施

基本代码在这里。Log4net 适配器在这里。NLog 适配器在这里

为Serilog添加了适配器。

如果没有适配器,则支持 ConsoleLogger、DiagnosticsLogger、StreamLogger 和 NullLogger。

将适配器写入任何其他日志记录框架非常容易。

于 2010-04-28T22:32:32.087 回答
9

我正在合并Simple Logging Facade,因为它似乎支持The Object Guy's Logging Framework for .Net开箱即用。

于 2010-05-06T21:33:03.793 回答
6

.NET Core 更新:

于 2017-06-06T17:29:19.500 回答
5

我有同样的问题。在经历了上面推荐的那些之后,我发现了Ninject.Extensions.Logging

这很棒,因为外观与 DI 结合起来最有意义

它带有NLog、NLog2 和 log4net的代理。

这是一个很好的例子,说明如何将它与 NLog 结合使用:http: //blog.tonysneed.com/2011/10/09/using-nlog-with-dependency-injection/

我明白,这个问题已经有几年了,但由于其他用户的完整性,我仍然选择发布这个“解决方案”

于 2012-09-27T09:14:59.147 回答
4

自从写了这个之后,另一个有趣的日志包装器Fody.Anotar出现了。截至今天,它可能是所有这些中最完整的。除了 Logging Faciliy 之外,其他大多数都已经过时了,只支持最古老的记录器。

它具有适用于 NLog、Log4Net、Serilog、CommongLogging、Catel、LibLog、MetroLog、NServiceBus 和 Splat 的适配器,并允许您为自己的库创建适配器。

您可以使用 Nuget 来安装它。查找 Anotar.*.Fody 包,例如 Anotar.NLog.Fody。

于 2015-06-15T16:23:06.040 回答
0

我不知何故发现这里的所有解决方案都不令人满意,尤其是对于库/API。虽然我从没想过我会,但我实际上写了一个开源“记录器”,它应该可以处理大多数问题。

也许你可以看看Dapplo.Log,你可以从 NuGet 获得它。

这个想法是在你的库中使用 Dapplo.Log,使用它的项目可以直接(在需要时)将任何日志输出到他们选择的记录器。可以在测试中找到指导输出的示例,这里有一些主要框架的实现。

它可能还不完美(还),我欢迎拉取请求或门票。

于 2017-04-11T09:02:57.243 回答