log4net不能记录日志,IsErrorEnabled值为false

在项目中建立log4net.config文件,内容如下:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <configSections>
    <section name="log4net"
             type="log4net.Config.Log4NetConfigurationSectionHandler,log4net-net-1.0"/>
  </configSections>

  <log4net>
  <root>
      <level value="WARN" />
      <appender-ref ref="LogFileAppender" />
      <!--<appender-ref ref="ConsoleAppender" />-->
    </root>

    <logger name="testApp.Logging">
      <level value="DEBUG"/>
    </logger>

    <appender name="LogFileAppender"
             type="log4net.Appender.FileAppender" >
      <param name="File" value="log-file.txt" />
      <param name="AppendToFile" value="true" />
      <layout type="log4net.Layout.PatternLayout">
        <!--<param name="Header" value="[Header]\r\n"/>
        <param name="Footer" value="[Footer]\r\n"/>-->
        <param name="ConversionPattern"
           value="%d [%t] %-5p %c [%x]  - %m%e%n"
         />
      </layout>
    <filter type="log4net.Filter.LevelRangeFilter">
        <param name="LevelMin" value="DEBUG" />
        <param name="LevelMax" value="ERROR" />
      </filter>
    </appender>

    <!--<appender name="ConsoleAppender"
              type="log4net.Appender.ConsoleAppender" >
      <layout type="log4net.Layout.PatternLayout">
        <param name="ConversionPattern"
           value="%d [%t] %-5p %c [%x] - %m%n"
        />
      </layout>
    </appender>-->

  </log4net>
</configuration>

Properties下面的AssemblyInfo.cs中加入[assembly: log4net.Config.XmlConfigurator(ConfigFile = "log4net.config", Watch = true)]

PS:1)如不写ConfigFile = "log4net.config",IsErrorEnabled也会为false

        2)log4net.Config.XmlConfigurator(ConfigFileExtension ="mylogger", Watch =true)]如果你的应用名称为test.exe,那么log4net的配置文件名为test.exe.mylogger。且ConfigFileExtension与ConfigFile只能二者择一。

      3)assembly一句也可以写到program等其他程序入口处。

       4)%e即%exception,这样才能记录catach捕获的ex异常消息。

程序中如下调用:

if (log.IsErrorEnabled)               

log.Error("Page Load failed : " + ex.Message);

但是总是不能记录日志,且IsErrorEnabled总为false。

解决:将log4net.config文件放到bin下的debug目录下。或者设置log4net.config文件为始终复制。

原文地址:https://www.cnblogs.com/ttssrs/p/2431179.html