2013-05-03 100 views
0

我無法讓log4net記錄ASP.Net webforms中的任何內容。這是林做:在Visual Basic中使用log4net和ASP.Net WebForms

的Web.config

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

<log4net> 
    <appender name="MyLogFileAppender" type="log4net.Appender.RollingFileAppender"> 
     <file value="C:\inetpub\MySite\Logs\MyLog.log"/> 
     <param name="AppendToFile" value="true"/> 
     <rollingStyle value="Size"/> 
     <maxSizeRollBackups value="10"/> 
     <maximumFileSize value="10KB"/> 
     <staticLogFileName value="true"/> 
     <layout type="log4net.Layout.PatternLayout"> 
      <param name="ConversionPattern" value="%-5p%d{yyyy-MM-dd hh:mm:ss} – %m%n"/> 
     </layout> 
    </appender> 
    <logger name="MyLogger"> 
     <level value="ALL"/> 
     <appender-ref ref="MyLogFileAppender"/> 
    </logger> 
</log4net> 
... 

的Global.asax

<%@ Application Language="VB" %> 
<%@ Import Namespace="System.IO" %> 
<%@ Import Namespace="log4net" %> 

<script runat="server"> 
    Public Shared Logger As ILog 

    Sub Application_Start(ByVal sender As Object, ByVal e As EventArgs) 
     Config.XmlConfigurator.ConfigureAndWatch(New FileInfo("Web.config")) 
    End Sub 

Test.aspx的

Protected Sub cmdTest_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles cmdTest.Click 
    Dim logger As log4net.ILog = log4net.LogManager.GetLogger("MyLogger") 
    logger.Debug("A test debug message") 
End Sub 

我已經給'C:\ inetpub \ MySite \ Logs'文件夾提供'每個人'的訪問權限,並且仍然沒有出現日誌。任何想法我可能做錯了什麼?

回答

0

在這些情況下,您可以使用內部調試來查看log4net正在做什麼或失敗的位置(參考此問題:How does one troubleshoot log4net when it stops logging)。

我沒有測試它,但我認爲如果您調用Configure方法(不帶參數)而不是ConfigureAndWatch方法,您的問題就會出現。您不需要觀察web.config文件中的更改,因爲對該文件的任何更改都會重置您的應用程序池。

如果您想使用外部配置文件(和ConfigureAndWatch),那麼您必須確保可以找到該文件。例如。像這樣:

XmlConfigurator.ConfigureAndWatch(New FileInfo(Path.Combine(Server.MapPath("~"),"Web.config")))