记录应用程序块 - Logger.Write()的成本

时间:2010-08-12 15:06:21

标签: logging enterprise-library

全部好,

当我们考虑应用程序性能时,关于CPU周期的Logger.Write(logEnrty)成本是多少。

1 个答案:

答案 0 :(得分:0)

我将在这里假设.NET / Visual Studio(名称为“Enterprise Library”)

应用程序性能比CPU周期更多。我不熟悉企业库记录器,但我认为记录中最大的不是CPU周期,而是磁盘IO。如果您的应用程序的磁盘IO很重,那么日志记录将比不受影响的情况更多地影响它。

我的建议:如果您想要/需要记录,请以一种从全球角度轻松禁用的方式添加它。而不是直接调用日志库,而是将它包装在您自己的类中,因此您可以通过使用类似DEBUG预处理指令的方式将其包装起来,从而轻松地在其中禁用它。并且,为了不占用您的主要执行线程,请在另一个线程上进行日志记录(不确定Enterprise Library是否默认执行此操作)

class MyLogger
{
    public static void Log(string msg)
    {
        #if DEBUG 
           // Logging code here
        #endif
    }
}

上面的预处理指令是什么,它只会在设置Visual Studio DEBUG模式时构建包装代码。它不适用于RELEASE模式。

而且,如果你真的真的需要知道,抓住一个分析工具,并获得一些关于日志记录费用的实际数据。