在項目中建立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文件為始終復制。
