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>
Foi útil?

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!

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top