【问题标题】:Native tracing functionality doesn't produce output本机跟踪功能不会产生输出
【发布时间】:2016-09-15 08:22:51
【问题描述】:

我正在研究如何正确使用 System.Diagnostics tracing functionality,但无法让我的代码正常工作。我已经阅读了有关configuring tracingcreating and initializing trace listeners、app.config 的source 元素以及一些相关的stackoverflow 帖子的官方文档。关于TraceSource 的msdn 文档让我很困惑......

我的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,但它是空的。 事件日志为空。 控制台输出为空。

有人可以给我一个提示吗?

【问题讨论】:

    标签: c# .net app-config trace system.diagnostics


    【解决方案1】:

    问题是我查看了TraceEventTypeTraceLevel 枚举来设置app.configswitch 的值。

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

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

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

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

    【讨论】:

      猜你喜欢
      • 2019-11-09
      • 1970-01-01
      • 2016-07-16
      • 2015-04-22
      • 2013-01-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多