记录和调试消息

时间:2013-02-01 15:02:43

标签: c# visual-studio

在打印这样的消息时,我的调试消息会评估昂贵的字符串操作:

Log.Debug("here it is" + obj.ExpensiveToString())

现在即使日志级别未设置为Debug,它仍会评估昂贵的字符串操作。

所以不必这样做:

if(debugMode) Log.Debug("here it is" + obj.ExpensiveToString())

或者有很多复杂的Log.Debug()方法,我该如何解决这个问题?

1 个答案:

答案 0 :(得分:3)

使用编译器指令

#if DEBUG
  Log.Debug("Here it is: "+obj.ExpensiveToString());
#endif

因为这些指令增加了代码详细程度,所以将它们用于昂贵的部分。

另一种方法是修改或补充您的日志系统以接受Func<string>

public void LogDebug(Func<string> evalMe){

#if DEBUG
    if (evalMe!=null)
      Log.Debug(evalMe);
#endif

}

然后像这样调用它:

LogDebug(()=>"Here it is: "+obj.ExpensiveToString());