在跟踪到 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 模型似乎不需要/使用/提及这些方法。
(在 trace 方法之外设置守卫会影响对调用中/用于调用的表达式的评估 - 当然,副作用或计算成本高昂的操作是“糟糕的”和“不明智的”,但我仍然希望专注于主要问题。)