我正在尝试在Visual Studio 2005的ASP.NET应用程序中使用log4net。我已经声明了一个logger实例,如下所示:

Private Shared ReadOnly log As ILog = LogManager.GetLogger("")

我试图以下列方式使用它:

If log.IsDebugEnabled Then
   log.Debug("Integration Services Constructed")
End If

这是我的配置:

<log4net>

    <root>
        <level value="DEBUG" />
        <appender-ref ref="RollingFileAppender" />
    </root>

    <appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
        <file value="..\\logs\\logfile.log"/>
        <appendToFile value="true"/>
        <rollingStyle value="Size"/>
        <maxSizeRollBackups value="10"/>
        <maximumFileSize value="1MB"/>
        <staticLogFileName value="true"/>
        <layout type="log4net.Layout.PatternLayout">
            <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline"/>
        </layout>
        <filter type="log4net.Filter.LevelRangeFilter">
            <param name="LevelMin" value="DEBUG" />
            <param name="LevelMax" value="FATAL" />
        </filter>
    </appender>

</log4net>

不幸的是, log.IsDebugEnabled 始终为false。
如何配置log4net以便我只能记录调试消息?

有帮助吗?

解决方案

在调用LogManager.GetLogger(&quot;&quot;)

之前

你必须调用log4net.Config.XmlConfigurator.Configure(); 在ASP.NET应用程序中,您可能希望将此调用放在Application_Start

其他提示

是的,就像安森所说的那样。此外,如果您在类库中调用Configure,则可以通过向类中添加属性来执行此操作:

[assembly: XmlConfigurator(Watch = true)]

如果您正在使用 log4net.config 文件,请改为使用它:

[assembly: log4net.Config.XmlConfigurator(ConfigFile = "log4net.config", Watch = true)]

如果您使用单独的log4net配置文件,请执行以下操作:按照所有其他设置说明操作后,确保右键单击visual studio解决方案资源管理器中的文件,选择属性,展开“高级”按钮。选项组,设置“复制到输出目录”;值为“始终复制”。那将是魔术...... :)欢呼!!

如果要在代码而不是配置文件中设置log4net,可以在 GetLogger 之前调用 log4net.Config.BasicConfigurator.Configure

VB.NET -

<Assembly: log4net.Config.XmlConfigurator(Watch:=True)> 

在使用log:

之前,请在任何方法中使用此方法

log4net.Config.XmlConfigurator.Configure();

在App.Config中,设置应为:

<root>
      <level value="ALL" />
      <appender-ref ref="AppenderName" />
    </root>
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top