此文档是我在"大道至简"的基础上修改而成,再次表示谢谢!
(一)log4net的标准配置文档示例 <?xmlversion="1.0"encoding="utf-8" ?> <configuration> <configSections> <sectionname="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler" /> </configSections> <log4net> <root> <levelvalue="WARN" /> <appender-refref="LogFileAppender" /> <appender-refref="ConsoleAppender" /> </root> <loggername="testApp.Logging"> <levelvalue="DEBUG"/> </logger> <appendername="LogFileAppender" type="log4net.Appender.FileAppender" > <paramname="File"value="log-file.txt" /> <paramname="AppendToFile"value="true" /> <layouttype="log4net.Layout.PatternLayout"> <paramname="Header"value="[Header] "/> <paramname="Footer"value="[Footer] "/> <paramname="ConversionPattern" value="%d [%t] %-5p %c[%x] - %m%n" /> </layout> <filtertype="log4net.Filter.LevelRangeFilter"> <paramname="LevelMin"value="DEBUG" /> <paramname="LevelMax"value="WARN" /> </filter> </appender> <appendername="ConsoleAppender" type="log4net.Appender.ConsoleAppender" > <layouttype="log4net.Layout.PatternLayout"> <paramname="ConversionPattern" value="%d [%t] %-5p %c [%x] -%m%n" /> </layout> </appender> </log4net> </configuration> (二)log4net配置文件与程序的关联 log4net的配置可以放在应用程序的默认配置文件中(app.config或web.config),也可以在自己指定的配置文件中。log4net框架中是使用log4net.Config.XmlConfigurator在程序集的级别上定义配置文件。 (1)winform程序中,如果配置在app.config文件中,配置文件的结构如示例。这时找到当前项目的Assemblyinfo.cs文件添加 [assembly:log4net.Config.XmlConfigurator(ConfigFileExtension = "config", Watch= true)] app.config文件属性设置保持默认。 (2)winform程序中,如果配置在自定义文件中如"Config.txt"中。这时找到当前项目的Assemblyinfo.cs文件添加 [assembly:log4net.Config.XmlConfigurator(ConfigFile="config.txt", Watch =true)] Config.txt文件的属性要设置为复制。就是要输出到输出目录。 这个时候配置可以省略示例模版中<configSection>节点里的<section>节点。 ConfigFile:指出了我们的配置文件的路径及文件名,包括扩展名。 ConfigFileExtension:如果我们对被编译程序的程序集使用了不同的文件扩展名,那么我们需要定义这个属性,缺省的,程序集的配置文件扩展名为"config". 更多 Watch (Boolean属性): log4net框架用这个属性来确定是否需要在运行时监视文件的改变。如果这个属性为true,那么FileSystemWatcher将会被用来监视文件的改变,重命名,删除等事件。 其中:ConfigFile和ConfigFileExtension属性不能同时使用,ConfigFile指出了配置文件的名字,例如,ConfigFile="Config.txt" ConfigFileExtension则是指明了和可执行程序集同名的配置文件的扩展名,例如,应用程序的名称是"test.exe",ConfigFileExtension="txt",则配置文件就应该是"test.exe.txt" ; 也可以在程序代码中用DOMConfigurator类打开配置文件。类的构造函数需要一个FileInfo对象作参数,以指出要打开的配置文件名。这个方法和前面在程序集里设置属性打开一个配置文件的效果是一样的。 log4net.Config.DOMConfigurator.Configure(newFileInfo("TestLogger.Exe.Config")); DOMConfigurator 类还有一个方法ConfigureAndWatch(), 用来配置框架并检测文件的变化。 (二)节点分析 在配置章节中,定义section节点。节点名称为:须为log4net,且大小写敏感。 <configSections> <sectionname="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler" /> </configSections> (三)log4net节点说明 (1)节点支持的属性,debug,update,threshold三个属性 debug 可选,取值是true或false,默认是false.设置为true,开启log4net的内部调试。 update 可选,取值是Merge(合并)或Overwrite(覆盖),默认值是Merge.设置为Overwrite,在提交配置的时候会重置已经配置过的库。 threshold 可选,取值是repository(库)中注册的level,默认值是ALL. (2)支持子元素 appender 0或多个 logger 0或多个 renderer 0或多个 root 最多一个 param 0或多个 (四)root节点说明 (1)根logger,所有其它logger都默认继承它。root元素没有属性。 (2)支持的子元素 appender-ref 0个或多个,要引用的appender的名字。 · level 最多一个。只有在这个级别或之上的事件才会被记录。 · param 0个或多个,设置一些参数。 <root> <levelvalue="WARN" /> <appender-refref="LogFileAppender" /> <appender-refref="ConsoleAppender" /> </root> (五)Logger节点说明 (1)支持的属性name,Additivity两个属性 name 必须的,logger的名称 additivity 可选,取值是true或false,默认值是true.设置为false时将阻止父logger中的appender. (2)支持的子元素: appender-ref 0个或多个,要引用的appender的名字。 ·level 最多一个。只有在这个级别或之上的事件才会被记录。 ·param 0个或多个,设置一些参数。 例如:<loggername="testApp.Logging"> <levelvalue="DEBUG"/> </logger> (六)Appender节点说明 (1)定义日志的输出方式,只能作为 log4net 的子元素。name属性必须唯一,type属性必须指定。支持name,type两个属性。 name 必须的,Appender对象的名称 type 必须的,Appender对象的输出类型 (2)支持的子元素: · appender-ref 0个或多个,允许此appender引用其他appender,并不是所以appender类型都支持。 ·filter 0个或多个,定义此app使用的过滤器。 ·layout 最多一个。定义appender使用的输出格式。 · param 0个或多个,设置Appender类中对应的属性的值。 例如: LogFileAppender 节点日志文件输出。type="log4net.Appender.FileAppender" ConsoleAppender节点控制台输出。type="log4net.Appender.ConsoleAppender" (七)Filter节点说明 过滤器,只能作为<appender>的子元素。 支持的属性: type 必须的,Filter的类型 支持的子元素:param 0个或多个,设置一些参数。 (八)Layout节点说明 布局,只能作为<appender>的子元素。 支持的属性: type 必须的,Layout的类型 支持的子元素:param 0个或多个,设置一些参数。 (九)Param <param>元素可以是如何元素的子元素。 支持的属性: name 必须的,取值是父对象的参数名。 value 可选的,value和type中,必须有一个属性被指定。value是一个能被转化为参数值的字符串。 type 可选的,value和type中,必须有一个属性被指定。type是一个类型名,如果type不是在log4net程序集中定义的,就需要使用全名。 支持的子元素:param 0个或多个,设置一些参数。