我应该在我的设计中将项目或应用程序范围的TraceSwitch放在哪里?

时间:2009-04-30 09:26:31

标签: c# diagnostics traceswitch

我正在尝试使用System.Diagnostics提供的一些日志记录功能来增强我的程序。由于我的解决方案包含多个项目,我想为整个应用程序创建一个开关,并为每个项目创建一个开关。

现在的问题是,我怎样才能实现这个目标,我应该在哪里设置交换机定义?

从应用程序范围的开关开始,因为在我理解的C#中没有全局变量这样的东西,我怎么能实现这个呢?

将推出

static TraceSwitch ApplicationSwitch = new TraceSwitch("Application", "Enables logging in the whole application.");

每个类中的一次解决这个问题,或者是否会创建尽可能多的开关,每个类都有相同的名称? (我的猜测是后者)

或者我应该将初始化一次放在一个单独的类

static class GlobalSwitch
{
    static TraceSwitch Application = new TraceSwitch("Application", "Enables logging in the whole application.");
}

并从其他所有类中引用它

public OtherClass
{
    static TraceSwitch Application = GlobalSwitch.Application;
}

这可以解决整个项目的1个开关,但这是一个好习惯吗?

关于应用程序范围的切换,我必须在每个其他项目中引用包含GlobalSwitch类的项目,如果可能的话我希望避免使用。

如何以聪明的方式做到这一点的一些线索将非常感激。

1 个答案:

答案 0 :(得分:2)

我通常将跟踪开关(和日志函数)包装到中央日志记录程序集中,向交换机公开静态接口以及将调用正在使用的基础日志功能的静态日志方法(通常是Trace.Write-functions) )。