2016-09-15 10 views
0

Я изучаю, как правильно использовать System.Diagnosticstracing functionality, но не могу заставить мой код работать. Я уже прочитал официальные документы о configuring tracing, creating and initializing trace listeners, source Элемент app.config и некоторые связанные записи 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 создается, но он пуст. Журнал событий пуст. Консольный выход пуст.

Может ли кто-нибудь дать мне подсказку?

ответ

0

Проблема заключалась в том, что я просмотрел перечисление TraceEventType и TraceLevel для установки моего значения switch в app.config.

Правильное перечисление для этого атрибута - SourceLevels.

Я изменил значение своего switch. Эти решения теперь работают (если я хочу, чтобы отслеживать каждое событие):

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

или

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

 Смежные вопросы

  • Нет связанных вопросов^_^