获取log4net的XML配置文件在ASP.NET webforms中读取

时间:2011-03-08 01:09:32

标签: c# asp.net webforms log4net

我正在尝试使用我知道正确的log4net XML配置文件在一个'经典'webforms应用程序中运行log4net,因为它是我与其他许多应用程序成功使用的文件的副本。我在主站点文件夹(config.log4net)中有C:\inetpub\wwwroot\文件,我在Global.asax.cs中配置了log4net,如下所示:

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的最佳方法是什么?

2 个答案:

答案 0 :(得分:2)

如果要以这种方式获取文件,请尝试使用Server.MapPath:

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

答案 1 :(得分:1)

在web.config中添加Log4Net配置,如下所示:

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