.NET世界中是否存在日志记录外观?

dwthyt8l  于 2023-04-13  发布在  .NET
关注(0)|答案(8)|浏览(150)

我对.NET栈有些陌生,我想知道是否有一个等价于.NET平台的slf4j。对我来说,登录到Facade并能够根据需要交换日志实现是有意义的。此外,slf4j中提供的 Package 器API多次帮助我避免了使用第三方库,该库是针对单个日志框架编写的,而我并没有使用它。t使用。
是否有一个项目在log4net,nLog和Enterprise Library等日志记录器之间充当门面?是否有 Package 器允许我快捷调用这些库并将它们定向到另一个库?我应该开始一个开源项目来自己做这件事吗?这个问题是重复的,因为我不知道正确的提问方式吗?相反,使用面向方面编程的常见方法是这样做的吗?

js5cn81o

js5cn81o1#

对不起,我用了这个东西,我忘了它不是Apache版本。它实际上是开源的,是一个名为公共基础设施的项目的一部分。它也被称为common logging。它与MS Enterprise,log4net和其他人一起工作。它运行良好。

vwhgwdsa

vwhgwdsa2#

看看城堡温莎Logging Facility
基本代码是here.Log4net适配器here.NLog适配器here
Serilog添加适配器。
如果没有适配器,则支持ConsoleLogger、DiagnosticsLogger、StreamLogger和NullLogger。
为任何其他日志框架编写适配器都非常容易。

kxe2p93d

kxe2p93d4#

.NET Core更新:

lf5gs5x2

lf5gs5x25#

我也遇到了同样的问题。在经历了上面推荐的那些之后,我发现**Ninject.Extensions.Logging**
这很好,因为无论如何,facade与DI结合使用最有意义
自带NLog、NLog2和log4net代理。
下面是一个很好的例子,说明如何将它与NLog结合使用:http://blog.tonysneed.com/2011/10/09/using-nlog-with-dependency-injection/

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

xlpyo6sf6#

自从写了这篇文章,另一个有趣的日志记录 Package 器Fody.Anotar出现了。截至今天,它可能是所有这些 Package 器中最完整的。其他大多数,但Logging Faciliy,都非常过时,只支持最老的日志记录器。
它有NLog,Log4Net,Serilog,CommongLogging,Catel,LibLog,MetroLog,NServiceBus和Splat的适配器,并允许您为自己的库创建适配器。
您可以使用Nuget安装它。查找Anotar.*.Fody包,例如Anotar.NLog.Fody。

o2rvlv0m

o2rvlv0m7#

我发现这里的所有解决方案都不令人满意,尤其是库/API。虽然我从来没有想过我会这样做,但我实际上写了一个开源的“日志”,它应该可以处理大多数问题。
也许你可以看看Dapplo.Log,你可以从NuGet得到它。
我们的想法是在你的库中使用Dapplo.Log,使用它的项目可以将任何日志输出定向(在需要时)到他们选择的记录器。在测试中可以找到定向输出的例子,以及一些主要框架here的实现。
它可能还不完美,我欢迎拉请求或门票。

alen0pnh

alen0pnh8#

发现自己处于这种情况下,我花了一些时间阅读所有的答案并研究一个好的解决方案。大多数提议的堆栈/框架/抽象现在都很旧,要么目前没有维护,要么不再流行。
然后,我遇到了LibLog,现在已被弃用,其自述文件明确推荐Microsoft.Extensions.Logging.Abstractions“*,因为它现在是.NET生态系统中事实上的标准日志接口 *"。
(For记录Microsoft.Extensions.Logging.Abstractions现在包含在ASP.NET日志中.NET运行时after it was moved there中)

相关问题