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