如何以编程方式获取当前的Trace Switch?

时间:2012-10-28 11:52:07

标签: c# web-config system.diagnostics

web.config我有:

<system.diagnostics>
  <switches>
    <add name="logLevelSwitch" value="1" />
  </switches>
</system.diagnostics>

有没有办法可以打电话,例如:

System.Diagnostics.TraceSwitch["logLevelSwitch"]获取当前值?

1 个答案:

答案 0 :(得分:5)

web.config文件中定义了切换值后,您可以通过创建名称相同的TraceSwitch轻松地从应用中获取此值:

private static TraceSwitch logSwitch = new TraceSwitch("logLevelSwitch",
    "This is your logLevelSwitch in the config file");

public static void Main(string[] args)
{
    // you can get its properties value then:
    Console.WriteLine("Trace switch {0} is configured as {1}",
        logSwitch.DisplayName,
        logSwitch.Level.ToString());

    // and you can use it like this:
    if (logSwitch.TraceError)
        Trace.WriteLine("This is an error");

    // or like this also:
    Trace.WriteLineIf(logSwitch.TraceWarning, "This is a warning");
}

此外,为此,根据文件:

  

您必须启用跟踪或调试才能使用交换机。下列   语法是编译器特定的。如果您使用C#以外的编译器   Visual Basic,请参阅编译器的文档。

     

要在C#中启用调试,请将/d:DEBUG标志添加到编译器命令行   编译代码时,或者可以将#define DEBUG添加到顶部   你的档案。在Visual Basic中,将/d:DEBUG=True标志添加到编译器   命令行。

     

要在C#中启用跟踪,请将/d:TRACE标志添加到   编译代码时的编译器命令行,或将#define TRACE添加到文件的顶部。在Visual Basic中,添加/d:TRACE=True   标志到编译器命令行。