1

我无法让 log4net 在 ASP.Net 网络表单中记​​录任何内容。这就是我正在做的事情:

网页配置

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

全球.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

测试.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”文件夹的访问权限,但仍然没有出现日志。任何想法我可能做错了什么?

4

1 回答 1

0

在这种情况下,您可以使用内部调试来查看 log4net 正在做什么或失败的地方(参见这个问题:当 log4net 停止记录时,如何对 log4net 进行故障排除)。

我没有测试它,但我认为如果你调用Configure方法(不带参数)而不是方法,你的问题就会解决ConfigureAndWatch。您无需查看 web.config 文件的更改,因为对该文件的任何更改都会重置您的应用程序池。

如果要使用外部配置文件(和ConfigureAndWatch),则必须确保可以找到该文件。比如像这样:

XmlConfigurator.ConfigureAndWatch(New FileInfo(Path.Combine(Server.MapPath("~"),"Web.config")))
于 2013-05-04T08:37:09.437 回答