Как использовать источники трассировки в коде приложения? - PullRequest
0 голосов
/ 08 февраля 2019

Я успешно настроил запись в файл App.config приложения.Соответствующие части следующие:

<system.diagnostics>
  <sources>
    <source name="System.Net.Http">
      <listeners>
        <add name="PushTraceListener" />
      </listeners>
    </source>
  </sources>
  <switches>
    <add name="System.Net.Http" value="Verbose"/>
  </switches>
  <sharedListeners>
    <add name="PushTraceListener"
         type="PushCore.Logging.LoggingTraceListener, PushCore" />
  </sharedListeners>
</system.diagnostics>
<system.serviceModel>
  <diagnostics>
    <messageLogging logEntireMessage="true"
                    logMalformedMessages="false"
                    logMessagesAtServiceLevel="true"
                    logMessagesAtTransportLevel="true"
                    maxMessagesToLog="3000"
                    maxSizeOfMessageToLog="2000"/>
  </diagnostics>
</system.serviceModel>

Хотя это работает нормально, мне кажется, я не могу сделать то же самое в коде приложения, который я попытался сделать следующим образом.

var LoggingTraceListener = new LoggingTraceListener
{ Name = "PushTraceListener", Filter = new LoggingTraceFilter() };
Trace.AutoFlush = true;                      
var TraceSourceNames = new string[] { "System.Net.Http" };

foreach (var TraceSourceName in TraceSourceNames)
{
    var TraceSource = new TraceSource(TraceSourceName, SourceLevels.Verbose);
    TraceSource.Switch = new SourceSwitch(TraceSourceName, "Verbose");
    TraceSource.Listeners.Add(LoggingTraceListener);
}

Trace.Listeners.Add(LoggingTraceListener);

The *Кажется, что сам 1008 * ведет себя как ожидалось, поскольку он получает сообщения, написанные с помощью Trace, но, очевидно, не из экземпляра TraceSource, для которого был создан экземпляр.Я почему-то считаю, что создание экземпляра TraceSource здесь нежелательно, но вместо этого придется использовать существующий источник трассировки.Тем не менее, я не знаю, как это сделать.

Возможно ли, во-первых, добиться желаемого входа в систему?Если да, то как?

Обоснованным вопросом было бы то, почему я хотел бы сделать доступ в коде вместо использования App.config, если конфигурация работает нормально.Причина в том, что App.config можно использовать только для реального приложения, но не для службы Windows.

Есть предложения?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...