2012-09-29 80 views
3

可能是一個非常簡單的設置,但我試圖建立log4net的。在我的web.config我有:登錄4網不記錄到文件

<log4net> 
    <appender name="File" type="log4net.Appender.RollingFileAppender"> 
     <file value="Logs\\Log4Net.log" /> 
     <appendToFile value="true" /> 
     <rollingStyle value="Date" /> 
     <datePattern value="yyyyMMdd-HHmm" /> 
     <layout type="log4net.Layout.PatternLayout"> 
     <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" /> 
     </layout> 
    </appender> 

    <logger name="File"> 
     <level value="All" /> 
     <appender-ref ref="LogFileAppender" /> 
    </logger> 
    <root> 
     <level value="ALL"/> 
     <appender-ref ref="FileAppender"/> 
    </root> 
    </log4net> 

我加入以下到我的configsections:

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

在Global.asax中以下內容:

log4net.Config.XmlConfigurator.Configure(); 

以下是我的default.aspx:

ILog alog = log4net.LogManager.GetLogger(typeof(_Default)); 
log4net.ILog logger = log4net.LogManager.GetLogger("File"); 

protected void Page_Load(object sender, EventArgs e) 
{ 
    if (!Page.IsPostBack) 
    { 
     SetupSeo(); 
    } 
    alog.Error("this test"); 
    logger.Error("Front page loaded for ip " + Request.UserHostAddress); 
} 

Wha t是錯的?

回答

11

我想這是一個權限問題。相關目錄沒有足夠的權限,因此ASP.NET可以寫入該目錄。

要驗證,通過將以下項中的webconfig部<appSettings>啓用log4net的內部調試。

<add key="log4net.Internal.Debug" value="true"/> 

現在添加下面的webconfig以及

<system.diagnostics> 
    <trace autoflush="true"> 
    <listeners> 
     <add 
     name="textWriterTraceListener" 
     type="System.Diagnostics.TextWriterTraceListener" 
     initializeData="C:\myLogFolder\log4net.txt" /> 
    </listeners> 
    </trace> 
</system.diagnostics> 

確保在C盤myLogFolder文件夾的權限,以便ASP.NET可以寫入這一點。這會將內部調試消息寫入此文件。運行應用程序,看看會發生什麼。

+0

關閉!參考問題 - 我的appender ref是錯誤的。非常感謝 :-) !!!! –

+0

我添加這些設置,以我的web.config文件,但即使是內部調試不工作,怪異... –

+0

@KelvinHu檢查目錄權限 – Shyju