调试语句的最佳实践是什么,其中包含字符串操作?

Oma*_*eji 2 c# java debugging log4net log4j

我经常发现自己在log4net和log4j的调试语句中添加了连接字符串或使用字符串格式化器,我应该用"if debug"块来包围这些调试语句,以便通过处理这些参数来阻止自己浪费资源,即使调试语句将会不打印出来?

我会假设检查if(isDebug)是否比发生字符串操作更快更高效,但是当调试级别设置为高于debug时,它会导致程序以不同的方式运行(更快),这可能意味着同步问题当我写入日志时,在生产中发生的事情不会发生.

dfa*_*dfa 7

对于Java,您可以尝试log5j.

log4j的:

log.debug("This thing broke: " + foo + " due to bar: " + bar + " on this thing: " + car);
Run Code Online (Sandbox Code Playgroud)

log5j:

log.debug("This thing broke: %s due to bar: %s on this thing: %s", foo, bar, car);
log.debug("Exception #%d", aThrowable, exceptionsCount++); 
Run Code Online (Sandbox Code Playgroud)