由于https://robertmccarter.com/switching-to-nlog和
中描述的多种原因,我喜欢NLog但我考虑一下 https://github.com/ServiceStack/ServiceStack,并 https://nuget.org/packages/ServiceStack.Logging.NLog保留通用接口和将来切换到其他提供商的能力。
是否有人了解使用ServiceStack.Logging.NLog的任何缺点/限制 而不是直接的NLog电话?
它会导致任何重要的性能下降吗?
直接调用NLog记录器时是否可以使用任何功能,但不受支持 ServiceStack?
答案 0 :(得分:5)
我比较过 ServiceStack ILog, Common.Logging/ILog和 NLog/Logger.cs 并发现NLog具有更多的重载次数,这使其更加类型安全。如果禁用特定记录的日志记录,NLog也有逻辑不处理格式化。
基于此,我决定使用通用日志记录界面是YAGNI。如果我要编写库以在多个应用程序中使用,可能使用不同的日志库, ServiceStack是一种可行的方式。
然而,在没有立即需要支持多个日志记录框架的应用程序开发中,直接调用Nlog更有效。 如果将来决定切换到其他提供商,则全局替换更改以进行呼叫 ServiceStack 或直接新提供者应该相对容易。
答案 1 :(得分:3)
快速回答是 - 您应该通过其通用日志记录界面使用ServiceStack NLog实现。看起来它可以为您提供所需的一切。
您可以查看ServiceStack NLog实施代码@ https://github.com/ServiceStack/ServiceStack.Logging/tree/master/src/ServiceStack.Logging.NLog
我假设你仍然可以通过NLog.config文件配置NLog,并且默认的NLogFactory会选择它 - 所以这仍然允许你做一些事情,比如特定于记录器的路由,多个目标等。
性能下降不会成为一个问题(除非你详细记录生产中的每一件小事,但那是你的,而不是框架)。
如果没有全面详细地介绍NLog实现,我不能说你将通过ServiceStack NLog获得所有功能 - 但是就你需要记录你的代码而言,你会很高兴去