Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Logging 日志应用程序块-Logger.Write()的成本_Logging_Enterprise Library - Fatal编程技术网

Logging 日志应用程序块-Logger.Write()的成本

Logging 日志应用程序块-Logger.Write()的成本,logging,enterprise-library,Logging,Enterprise Library,大家好 在考虑应用程序性能时,Logger.WriteLogEntry相对于CPU周期的成本有多高 我将假定.NET/Visual Studio在这里命名为企业库 应用程序性能不仅仅是CPU周期。我不熟悉Enterprise Library logger,但我认为日志记录的最大影响不是CPU周期,而是磁盘IO。如果您的应用程序是磁盘IO密集型应用程序,那么日志记录对它的影响将比不密集型应用程序更大 我的建议:如果您想要/需要日志记录,请以这样一种方式添加日志,以便从全局角度轻松禁用它。与其直接调

大家好


在考虑应用程序性能时,Logger.WriteLogEntry相对于CPU周期的成本有多高

我将假定.NET/Visual Studio在这里命名为企业库

应用程序性能不仅仅是CPU周期。我不熟悉Enterprise Library logger,但我认为日志记录的最大影响不是CPU周期,而是磁盘IO。如果您的应用程序是磁盘IO密集型应用程序,那么日志记录对它的影响将比不密集型应用程序更大

我的建议:如果您想要/需要日志记录,请以这样一种方式添加日志,以便从全局角度轻松禁用它。与其直接调用日志库,不如将其封装在您自己的类中,这样您就可以通过使用类似于调试预处理指令的内容来轻松地将其禁用。并且,为了不阻塞主执行线程,请在不同的线程上进行日志记录,但不确定默认情况下企业库是否会这样做

class MyLogger
{
    public static void Log(string msg)
    {
        #if DEBUG 
           // Logging code here
        #endif
    }
}
上面的预处理指令所做的是,它仅在设置VisualStudio调试模式时构建包装代码。它不适用于释放模式


而且,如果您真的需要了解,请使用分析工具,获取有关日志记录成本的真实数据。

如果您需要在生产中发现具体问题,该怎么办?最好是远程:给用户简单的指示或通过电子邮件发送文件。我建议使用快速测试方法或DI:when logger injected-log,else-no:if logger.IsEnabled//then log。通过这种方式,性能或多或少都很好,并且可以随时打开/关闭日志记录。