如果我做NLog.Trace():
logger.Trace("Json: {0}", Newtonsoft.Json.JsonConvert.DeserializeObject(myObject));
Run Code Online (Sandbox Code Playgroud)
我的高级错误是错误的:
<logger name="*" minlevel="Error" writeTo="mail" enabled="false" />
Run Code Online (Sandbox Code Playgroud)
我的对象会被反序列化吗?是的,当然是的.但是我怎么能避免这个呢?
if(logger.IsTraceEnabled)
logger.Trace("Json: {0}", Newtonsoft.Json.JsonConvert.SerializeObject(myObject));
Run Code Online (Sandbox Code Playgroud)
请参见IsTraceEnabled.
对于记录呼叫本身可能很昂贵的呼叫(如上面的情况)或重复的高呼叫循环,这是一种很好的做法.对于其他所有内容,通常不需要添加检查,因为框架本身在调用内执行相同的检查.