Как указать EventLogTraceListener для создания в определенном журнале

StackOverflow https://stackoverflow.com/questions/1133779

Вопрос

Следующий прослушиватель создаст запись о событии при вызове 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>
Это было полезно?

Решение

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

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

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

Другие советы

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

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

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

<appSettings>
    <add key="MyCustomEventLogName" value="CustomEventLogName" />
</appSettings>

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top