【发布时间】:2014-05-03 01:08:47
【问题描述】:
在跟踪到 TraceSource 之前,是否应该在发出跟踪之前检查“跟踪级别”?
var ts = new TraceSource("foo");
ts.Switch.Level = SourceLevels.Warning;
if (/* should there be a guard here? and if so, what? */) {
ts.TraceEvent(TraceEventType.Warning, 0, "bar");
}
虽然有SourceSwitch.ShouldTrace(TraceEventType),但文档表明
应用程序代码不应调用此方法;它只能由 TraceSource 类中的方法调用。
似乎 pre-TraceSource 模型使用了 TraceSwitch(不是 SourceSwitch)类,该类具有各种 TraceXYZ 方法(为此目的?),但 TraceSource 模型似乎不需要/使用/提及这些方法。
(将守卫在外跟踪方法会影响对调用中/调用中使用的表达式的评估-当然副作用或计算量大的操作是“坏的”和“不明智的” ,但我仍然希望专注于主要问题。)
【问题讨论】:
标签: c# trace tracesource traceswitch