2008-10-20 75 views
26

我試圖在Visual Studio 2005中的ASP.NET應用程序中使用log4net的我已在申報記錄器的實例,像這樣:如何配置log4net以便log.IsDebugEnabled爲真?

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

我想通過以下方式來使用它:

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

這裏是我的配置:

<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> 

不幸的是,log.IsDebugEnabled永遠是假的。
如何配置log4net以便我只能記錄調試消息?

回答

42

之前調用LogManager.GetLogger( 「」)

你必須調用log4net.Config.XmlConfigurator.Configure(); 在ASP.NET應用程序中,您可能希望將此調用放入Application_Start中

24

是的,像Anson說的那樣。

[assembly: XmlConfigurator(Watch = true)] 

,如果你正在使用log4net.config文件,使用這樣的代替:另外,如果你在一個類庫調用配置,你可以通過添加一個屬性上您的課做

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

如果您正在爲log4net使用單獨的配置文件,請執行以下操作:在遵循所有其他設置說明之後,請確保在Visual Studio解決方案資源管理器中右鍵單擊文件,選擇屬性,展開「高級」選項組,將「複製到輸出目錄」值設置爲「始終複製」。這將做魔術...... :)歡呼聲!

0

使用此以任何方法使用前應先登錄:

log4net.Config.XmlConfigurator.Configure();

在App.Config中,設置應該是:

<root> 
     <level value="ALL" /> 
     <appender-ref ref="AppenderName" /> 
    </root> 
1

VB.NET -

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

如果設置了log4net的代碼,而不是在配置文件中,你可以調用log4net.Config.BasicConfigurator.Configure之前GetLogger