【问题标题】:What are disadvantages to use ServiceStack.Logging.NLog instead of direct NLog calls?使用 ServiceStack.Logging.NLog 而不是直接调用 NLog 有什么缺点?
【发布时间】:2023-04-06 04:57:01
【问题描述】:

由于https://robertmccarter.com/switching-to-nlog 中描述的多种原因,我喜欢 NLog 和

log4net vs. Nlog

但是我认为 https://github.com/ServiceStack/ServiceStackhttps://nuget.org/packages/ServiceStack.Logging.NLog 保留通用接口和将来切换到其他提供商的能力。

是否有人知道使用 ServiceStack.Logging.NLog 的任何缺点/限制 而不是直接调用 NLog?

它会导致任何重要的性能下降吗?

是否有任何功能在直接调用 NLog 记录器时可用,但不支持 服务栈?

【问题讨论】:

    标签: logging servicestack nlog


    【解决方案1】:

    我比较过 ServiceStack ILog, Common.Logging/ILogNLog/Logger.cs 并发现 NLog 有更多的重载,这使得它更安全。如果特定记录的日志记录被禁用,NLog 还具有不处理格式化的逻辑。

    基于此,我决定使用通用日志接口是 YAGNI。如果我要编写要在多个应用程序中使用的库,并且可能使用不同的日志库, ServiceStack 是一种可行的方法。

    但是在应用程序开发中,不需要立即支持多个日志框架,直接调用 Nlog 效率更高。 如果将来决定切换到其他提供商,则全局替换更改为调用 服务栈 或者直接新的提供者应该相对容易。

    【讨论】:

      【解决方案2】:

      快速的答案是——你应该可以通过它们的通用日志接口使用 ServiceStack NLog 实现。看起来它可以为您提供所需的一切。

      可以查看ServiceStack NLog实现代码@https://github.com/ServiceStack/ServiceStack.Logging/tree/master/src/ServiceStack.Logging.NLog

      我假设您仍然可以通过 NLog.config 文件配置 NLog,并且默认的 NLogFactory 会选择它 - 所以这仍然允许您执行特定于记录器的路由、多个目标等操作。

      性能下降不会成为问题(除非您详细记录生产中的每一件小事,但这取决于您,而不是框架)。

      如果不详细介绍 NLog 实现,我不能说您将通过 ServiceStack NLog 获得所有功能 - 但就您需要记录代码而言,您会很高兴.

      【讨论】:

        猜你喜欢
        • 2011-07-14
        • 2012-06-09
        • 2023-03-22
        • 2012-07-16
        • 1970-01-01
        • 2011-08-22
        • 2016-03-17
        • 2011-08-21
        • 2013-07-09
        相关资源
        最近更新 更多