Como dirigir o EventLogTraceListener para criar em uma específica Log
Pergunta
A seguir ouvinte vai criar uma entrada de evento quando o Trace.WriteLine é chamado. Se a fonte não existe, ele irá criá-la no canal de log padrão que é 'Aplicação'. Eu quero especificar outro canal Log padrão, mas depois de procurar por 45 minutos i não parecem encontrar a solução. Alguma idéia?
<configuration>
<system.diagnostics>
<trace autoflush="false" indentsize="4">
<listeners>
<add name="myListener"
type="System.Diagnostics.EventLogTraceListener"
initializeData="Source">
</add>
</listeners>
</trace>
</system.diagnostics>
</configuration>
Solução
Não tenho certeza de que você pode através da configuração.
Embora o EventLogTraceListener faz aceitar um eventlog diferente como um parâmetro no construtor. Infelizmente, a classe é selado para que você não pode simplesmente tirar dela e passar um valor diferente para o construtor.
Embora você poderia seguir esta abordagem e construir sua própria classe (parece bastante simples). E então referenciar esse tipo na sua configuração. http://weblogs.asp.net/psteele/archive/ 2006/02/23 / 438936.aspx
Outras dicas
Você poderia repoint o ouvinte na primeira linha de código.
Trace.Listeners["MyListener"].Attributes["EventLog"] = ConfigurationManager.AppSettings["MyCustomEventLogName"];
O valor pode ser armazenada na seção <appSettings>
do arquivo de configuração por isso ainda é baseado configuração:
<appSettings>
<add key="MyCustomEventLogName" value="CustomEventLogName" />
</appSettings>
Você pode encontrar uma solução para isso neste post:
http://weblogs.asp.net/psteele/438936
É realmente funciona!