2011-03-08 55 views
0

我試圖讓log4net的一個「經典」 web表單應用程序的工作,使用log4net的XML配置文件,我知道是正確的,因爲它是一個文件的副本我成功地使用了許多其他應用程序。我有config.log4net文件在主站點文件夾(C:\inetpub\wwwroot\),我在Global.asax.cs配置log4net的如下:獲得的log4net的XML配置文件的WebForms

protected void Application_Start(Object sender, EventArgs e) 
{ 
    var log = LogManager.GetLogger("SomeWebsite"); 
    XmlConfigurator.Configure(new FileInfo("config.log4net")); 

    // bind log to the DI container 
    ... 
} 

每當我然後使用log實例(甚至在Application_Start)沒有任何反應,甚至不是一個錯誤。我知道,如果config.log4net配置錯誤,log4net將自動失敗,但我相信這不是問題。我有一種感覺,它與FileInfo的基本路徑錯誤有關。

在這種情況下配置log4net的最佳方式是什麼?

+0

嘗試打開log4net的內部調試。 「要以編程方式啓用log4net的內部調試,您需要將log4net.Util.LogLog.InternalDebugging屬性設置爲true。」 – 2011-03-08 02:23:16

回答

2

嘗試使用,如果使用Server.Mappath你要抓住的文件方式:

var fi = new FileInfo(Server.MapPath("~/log4net.config")); 
+0

這就完成了!謝謝。 – 2011-03-08 07:14:32

1

添加您的log4net的配置在web.config中像這樣:

<configSections> 
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" /> 
</configSections> 

<log4net debug="true"> 
    <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender"> 
     <file value="C:\\TestProj\\TestLog.txt" /> 
     <appendToFile value="true" /> 
     <rollingStyle value="Size" /> 
     <maxSizeRollBackups value="10" /> 
     <maximumFileSize value="10MB" /> 
     <staticLogFileName value="true" /> 
     <layout type="log4net.Layout.PatternLayout"> 
      <conversionPattern value="%-5p %d %5rms %-22.22c{1} %-18.18M - %m%n" /> 
     </layout> 
    </appender> 

    <root> 
     <level value="DEBUG" /> 
     <appender-ref ref="RollingLogFileAppender" /> 
    </root> 
</log4net> 
+0

感謝@sajoshi,看起來像配置log4net的的_right_方式,但我想保持獨立的文件,因爲它是在許多其他應用程序使用。 +1仍然 – 2011-03-08 07:16:19