Как указать EventLogTraceListener для создания в определенном журнале
Вопрос
Следующий прослушиватель создаст запись о событии при вызове 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
Это действительно работает!