Как направить EventLogTraceListener для создания в определенном журнале - PullRequest
7 голосов
/ 16 июля 2009

Следующий слушатель создаст запись о событии при вызове Trace.WriteLine. Если источник не существует, он создаст его в канале журнала по умолчанию, который называется «Приложение». Я хочу указать другой канал регистрации по умолчанию, но после поиска в течение 45 минут я не могу найти решение. Есть идеи?

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

Ответы [ 3 ]

3 голосов
/ 16 июля 2009

Не уверен, что можно через конфиг.

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

Хотя вы могли бы следовать этому подходу и создать свой собственный класс (кажется довольно простым). А затем ссылаться на этот тип в вашей конфигурации. http://weblogs.asp.net/psteele/archive/2006/02/23/438936.aspx

0 голосов
/ 03 августа 2017

Вы можете переписать слушателя в первой строке кода.

Trace.Listeners["MyListener"].Attributes["EventLog"] = ConfigurationManager.AppSettings["MyCustomEventLogName"];

Значение может быть сохранено в разделе <appSettings> файла конфигурации, поэтому оно все еще основано на конфигурации:

<appSettings>
    <add key="MyCustomEventLogName" value="CustomEventLogName" />
</appSettings>
0 голосов
/ 16 марта 2015

Вы можете найти решение для этого в этом сообщении в блоге:

http://weblogs.asp.net/psteele/438936

Это действительно работает!

...