Pergunta

Eu estou tentando usar log4net em um aplicativo ASP.NET com o Visual Studio 2005. Eu anunciei uma instância do logger assim:

Private Shared ReadOnly log As ILog = LogManager.GetLogger("")

Eu estou tentando usá-lo da seguinte maneira:

If log.IsDebugEnabled Then
   log.Debug("Integration Services Constructed")
End If

Aqui está a minha configuração:

<log4net>

    <root>
        <level value="DEBUG" />
        <appender-ref ref="RollingFileAppender" />
    </root>

    <appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
        <file value="..\\logs\\logfile.log"/>
        <appendToFile value="true"/>
        <rollingStyle value="Size"/>
        <maxSizeRollBackups value="10"/>
        <maximumFileSize value="1MB"/>
        <staticLogFileName value="true"/>
        <layout type="log4net.Layout.PatternLayout">
            <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline"/>
        </layout>
        <filter type="log4net.Filter.LevelRangeFilter">
            <param name="LevelMin" value="DEBUG" />
            <param name="LevelMax" value="FATAL" />
        </filter>
    </appender>

</log4net>

Infelizmente, log.IsDebugEnabled é sempre falsa.
Como configurar log4net para que eu possa registrar somente mensagens de depuração?

Foi útil?

Solução

Antes de chamar LogManager.GetLogger ( "")

Você tem que chamar log4net.Config.XmlConfigurator.Configure (); Em um aplicativo ASP.NET você provavelmente vai querer colocar essa chamada em Application_Start

Outras dicas

Sim, fazê-lo como Anson disse. Além disso, se você está chamando Configurar em uma biblioteca de classes que você pode fazer isso adicionando um atributo a sua classe:

[assembly: XmlConfigurator(Watch = true)]

e se você estiver usando o arquivo log4net.config, usá-lo como que em vez disso:

[assembly: log4net.Config.XmlConfigurator(ConfigFile = "log4net.config", Watch = true)]

Se você estiver usando um arquivo de configuração separado para log4net, faça o seguinte: depois de seguir todas as instruções de configuração, certifique-se u clique direito sobre o arquivo no explorador solução visual studio, selecione Propriedades, expanda a opção "Avançado" grupo, defina o valor "Copiar Para Output Directory" como "Copiar sempre". Isso vai fazer a mágica ... :) aplausos !!

Se você estiver configurando log4net em código, em vez de em um arquivo de configuração, você pode chamar log4net.Config.BasicConfigurator.Configure antes GetLogger.

VB.NET -

<Assembly: log4net.Config.XmlConfigurator(Watch:=True)> 

Use este em qualquer método antes de usar log:

log4net.Config.XmlConfigurator.Configure ();

Em App.Config, as definições devem ser:

<root>
      <level value="ALL" />
      <appender-ref ref="AppenderName" />
    </root>
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top