Запись в журнал событий с использованием данных из файла конфигурации - PullRequest
0 голосов
/ 24 мая 2019

Я делаю некоторые практические тесты для экзамена Microsoft «Программирование на C #» 70-483, и один из вопросов поставил меня в тупик, и я не знаю достаточно о трассировке, чтобы проверить его правильно.

Вопрос такой:

Вы разрабатываете приложение, которое использует файл .config.
Соответствующая часть файла .config показана следующим образом:

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

Необходимо убедиться, что диагностические данные для приложения записываются в журнал событий, используя конфигурацию, указанную в файле .config. Что вы должны включить в код приложения?

A. EventLog log = new EventLog(); <br/>log.WriteEntry("Trace data...");

B. Debug.WriteLine("Trace data...");

C. Console.SetOut(new StreamWriter("System.Diagnostics.EventLogTraceListener")); <br/>Console.WriteLine("Trace data...");

D. Trace.WriteLine("Trace data...");

Я думаю "C", потому что это единственный вариант, который имеет что-то , имеющее отношение к файлу .config, но он говорит, что правильный ответ "D" по некоторым причинам. Имейте в виду, что эти вопросы были не правы ранее о совершенно простых и очевидных вещах, так что ...

Не могли бы вы объяснить, какой правильный ответ и почему?

Ответы [ 2 ]

3 голосов
/ 24 мая 2019

Решение - читать о трассировке вместо того, чтобы пытаться просто найти правильный ответ.

C является абсолютным худшим - он не только делает этоне имея ничего общего с System.Diagnostics или EventLog, он попытается создать файл с именем System.Diagnostics.EventLogTraceListener.

Единственные опции, которые на самом деле используют System.Diagnostics, это B и D.

В разделе <system.diagnostics><trace> в app.config настраиваются классы System.Diagnostics, включая источники, прослушиватели, переключатели, которые активируют или деактивируют определенные источники в приложении и т. Д. На самом деле это ничем не отличается отфайлы конфигурации, используемые для любой другой библиотеки журналов, такой как log4net, Serilog или NLog.

  • Debug.WriteLine("Trace data..."); запишет вывод всем настроенным слушателям трассировки, только в отладочной сборке.

  • Trace.WriteLine("Trace data..."); запишет все настроенные прослушиватели трассировки как в отладочной, так и в выпускной сборках.

Опция A также неверна.Он включает в себя журнал событий, но не будет работать, потому что источник не установлен. EventLog.WriteEntry также не отправляет диагностическую информацию, он просто записывает информационное сообщение в журнал событий.

С другой стороны, прослушиватель System.Diagnosticsполучит диагностические события от множества источников трассировки в .NET, включая собственное приложение, отфильтрует его и запишет в свою цель.

У вас, например, проблемы с сетью?Вы можете включить прослушиватели трассировки System.Net и собирать сообщения трассировки от уровня HTTP вплоть до сокетов, SSL, TCP и даже пакетных операций.

0 голосов
/ 24 мая 2019

Правильный ответ: «D», что делает этот файл конфигурации .. добавляет экземпляр в trace.Listeners. Поэтому всякий раз, когда вы вызываете Trace.WriteLine, одним из выходных данных будет тот прослушиватель, который вы настроили в файле конфигурации.

«C» тоже будет работать, но в нем говорится, что вам нужно убедиться, что вы используете файл конфигурации, а то, что вы делаете в C, не имеет ничего общего с файлом конфигурации.

...