Понимание того, как Trace работает в С#

Я пытаюсь понять, как работает трассировка

Я создал простой новый веб-проект. Это мой код, который я могу использовать

// Create a trace listener for the event log.
EventLogTraceListener myTraceListener = new EventLogTraceListener("myEventLogSource");

// Add the event log trace listener to the collection.
Trace.Listeners.Add(myTraceListener);

// Write output to the event log.
Trace.WriteLine("Test output");

Я пользуюсь этой ссылкой msdn

Настройки в моем web.config выглядят следующим образом

 <system.diagnostics>
 <trace autoflush="false" indentsize="4">
  <listeners>
    <add name="myListener"
      type="System.Diagnostics.EventLogTraceListener"
      initializeData="TraceListenerLog" />
  </listeners>
 </trace>
</system.diagnostics>

Однако, когда я запускаю этот код, я не знаю, где это ведение журнала происходит. Я проверяю EVENT VIEWER, в разделе "Журнал приложений и сервисов" я ожидал создания нового журнала с именем "myEventLogSource", но не было.

Пожалуйста, объясните мне, как это работает.

Ответ 1

В журнале приложений проверьте, есть ли у вас два источника, которые записывались в журнал приложений, один из них - TraceListenerLog, а другой - myEventLogSource. Новый журнал не будет создан, они оба будут использовать журнал приложений. Если вы хотите создать новый журнал и хотите записать на него вывод трассировки, вы можете сделать это так (конечно, имя журнала не должно быть равно имени источника):

        string logSource = "_myEventLogSource";
        if (!EventLog.SourceExists(logSource))
            EventLog.CreateEventSource(logSource, logSource);

        EventLogTraceListener myTraceListener = new EventLogTraceListener(logSource);

        // Add the event log trace listener to the collection.
        System.Diagnostics.Trace.Listeners.Add(myTraceListener);

        // Write output to the event log.
        System.Diagnostics.Trace.WriteLine("Test output");

Даже если источник не существует, информация о трассировке будет записана в журнал событий в журнале приложений с исходным именем, которое вы передали конструктору EventLogTraceListener.