本机跟踪功能不产生输出

Native tracing functionality doesn't produce output

我正在研究如何使用 System.Diagnostics tracing functionality properly, but cannot get my code to work. I have already read the official docs about configuring tracing, creating and initializing trace listeners, the source element of the app.config and some related Whosebug posts. The msdn doc about TraceSource 让我很困惑...

我的 app.config 包含以下部分:

<system.diagnostics>
    <sources>
        <source name="ApplicationTraceSource" switchName="ApplicationTraceSwitch" switchType="System.Diagnostics.SourceSwitch">
            <listeners>
                <add name="EventLogListener"   type="System.Diagnostics.EventLogTraceListener"   initializeData="PDS"     />
                <add name="TextLogListener"    type="System.Diagnostics.TextWriterTraceListener" initializeData="PDS.log" />
                <add name="ConsoleLogListener" type="System.Diagnostics.ConsoleTraceListener"    />

                <remove name="Default" />
            </listeners>
        </source>
        <source name="DatabaseActivitySource" switchName="DatabaseActivityTraceSwitch" switchType="System.Diagnostics.SourceSwitch">
            <listeners>
                <add name="QueryTextLogListener" type="System.Diagnostics.TextWriterTraceListener" initializeData="Queries.log" />

                <remove name="Default" />
            </listeners>
        </source>
    </sources>

    <switches>
        <!--Set value to 0 to turn of database activity log.-->
        <add name="DatabaseActivityTraceSwitch" value="1" />

        <!--Set value to 0 to turn of application log. 1 for errors. 2 for errors und warnings. 3 for more detailed error information. 4 for verbose trace information.-->
        <add name="ApplicationTraceSwitch" value="4" />
    </switches>
</system.diagnostics>

我的 Program.cs 中的代码非常简单:

if (EventLog.SourceExists("PDS") == false)
{
    EventLog.CreateEventSource("PDS", "EventLogListener");
}

TraceSource applicationTraceSource = new TraceSource("ApplicationTraceSource");

applicationTraceSource.TraceInformation("i am information");

applicationTraceSource.TraceEvent(TraceEventType.Error, 1, "i am error event");
applicationTraceSource.TraceEvent(TraceEventType.Warning, 2, "i am warning event");
applicationTraceSource.TraceEvent(TraceEventType.Information, 3, "i am information event");
applicationTraceSource.TraceEvent(TraceEventType.Verbose, 4, " am verbose event");

applicationTraceSource.TraceData(TraceEventType.Error, 5, "i am error data");
applicationTraceSource.TraceData(TraceEventType.Warning, 6, "i am warning data");
applicationTraceSource.TraceData(TraceEventType.Information, 7, "i am information data");
applicationTraceSource.TraceData(TraceEventType.Verbose, 8, " am verbose data");

applicationTraceSource.Flush();

正在创建文件 PDS.log,但它是空的。 事件日志为空。 控制台输出为空。

有人可以给我提示吗?

问题是我查看了 TraceEventType and TraceLevel 枚举以在 app.config.

中设置 switch 的值

此属性的 正确枚举 SourceLevels 标志。

我更改了 switch 的值。以下解决方案现在有效(如果我想跟踪每个事件):

<add name="ApplicationTraceSwitch" value="-1" />

<add name="ApplicationTraceSwitch" value="ALL" />