在项目中建立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文件为始终复制。