Log4Net配置详解
配置⽂件构成
主要有两⼤部分,⼀是申明⼀个名为“log4net“的⾃定义配置节,如下所⽰;⼆是<log4net>节的具体配置,这是下⾯要重点说明的
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
</configSections>
1、<log4net>
⽀持的⼦元素:
appender0或多个
logger0或多个
param namerenderer0或多个
root最多⼀个
param0或多个
1.1 、<root>:实际上就是⼀个根logger,所有其它logger都默认继承它,如果配置⽂件⾥没有显式定义,则框架使⽤根⽇志中定义的属性。root元素没有属性
<root>⽀持的⼦元素:
appender-ref0个或多个,要引⽤的appender的名字。
level最多⼀个。只有在这个级别或之上的事件才会被记录。
param0个或多个,设置⼀些参数。
1.2 、<logger>:
⽀持的属性:
name必须的,logger的名称
additivity可选,取值是true或false,默认值是true。设置为false时将阻⽌⽗logger中的appender。
⽀持的⼦元素:
appender-ref0个或多个,要引⽤的appender的名字。
level最多⼀个。只有在这个级别或之上的事件才会被记录。
param0个或多个,设置⼀些参数。
1.3、<appender>:定义⽇志的输出⽅式,只能作为 log4net 的⼦元素。name属性必须唯⼀,type属性必须指定。
⽀持的属性:
name必须的,Appender对象的名称
type必须的,Appender对象的输出类型
⽀持的⼦元素:
appender-ref0个或多个,允许此appender引⽤其他appender,并不是所以appender类型都⽀持。
filter0个或多个,定义此app使⽤的过滤器。
layout最多⼀个。定义appender使⽤的输出格式。
param0个或多个,设置Appender类中对应的属性的值。
实际上<appender>所能包含的⼦元素远不⽌上⾯4个。
1.4、<layout>:布局,只能作为<appender>的⼦元素。
⽀持的属性:
type必须的,Layout的类型
⽀持的⼦元素:
param0个或多个,设置⼀些参数。
1.5、<filter>:过滤器,只能作为<appender>的⼦元素。
⽀持的属性:
type必须的,Filter的类型
⽀持的⼦元素:
param0个或多个,设置⼀些参数。
1.6、<param>:<param>元素可以是任何元素的⼦元素。
⽀持的属性:
name必须的,取值是⽗对象的参数名。
value可选的,value和type中,必须有⼀个属性被指定。value是⼀个能被转化为参数值的字符串。
type可选的,value和type中,必须有⼀个属性被指定。type是⼀个类型名,如果type不是在log4net程序集中定义的,就需要使⽤全名。⽀持的⼦元素:
param0个或多个,设置⼀些参数。
2.根据写的⾃⼰的配置源码
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
</configSections>
<log4net>
<root>
<level value="ALL"/>
<appender-ref ref="SysAppender"/>
</root>
<logger name="TestLogger">
<level value="DEBUG"/>
</logger>
<appender name="SysAppender" type="log4net.Appender.RollingFileAppender,log4net">
<!--是否追加到⽂件:⽇志⽂件路径,⽂件夹不存在则新建 -->
<param name="File" value="E:\MyProject\Test\MineSolution1\Log4Net.Test\Log4Net.Test\bin\"/>
<!--是否追加到⽂件-->
<param name="AppendToFile" value="true"/>
<!--记录⽇志写⼊⽂件时,不锁定⽂本⽂件,防⽌多线程时不能写Log,官⽅说线程⾮安全-->
<lockingModel type="log4net.Appender.FileAppender+MinimalLock"/>
<!--使⽤Unicode编码-->
<Encoding value="UTF-8"/>
<!--最多产⽣的⽇志⽂件数,超过则只保留最新的n个。设定值value="-1"为不限⽂件数-->
<param name="MaxSizeRollBackups" value="10"/>
<!--是否只写到⼀个⽂件中-->
<param name="StaticLogFileName" value="false"/>
<!--按照何种⽅式产⽣多个⽇志⽂件(⽇期[Date],⽂件⼤⼩[Size],混合[Composite])-->
<param name="RollingStyle" value="Composite"/>
<!--按⽇期产⽣⽂件夹和⽂件名[在⽇期⽅式与混合⽅式下使⽤]-->
<!--此处按⽇期产⽣⽂件夹,⽂件名固定。注意" 的位置-->
<param name="DatePattern" value="yyyy-MM-dd/"ReflectionLayout.log""/>
<!--这是按⽇期产⽣⽂件夹,并在⽂件名前也加上⽇期-->
<!--<param name="DatePattern" value="yyyyMMdd/yyyyMMdd"-TimerServer.log"" />-->
<!--这是先按⽇期产⽣⽂件夹,再形成下⼀级固定的⽂件夹-->
<!--<param name="DatePattern" value="yyyyMMdd/"TimerServer/TimerServer.log"" />-->
<!--每个⽂件的⼤⼩:只在混合⽅式与⽂件⼤⼩⽅式下使⽤。超出⼤⼩后在所有⽂件名后⾃动增加正整数重新命名,数字最⼤的最早写⼊。可⽤的单位:KB|MB|GB。不要使⽤⼩数,否则会⼀直写⼊当前⽇志-->
<param name="maximumFileSize" value="500KB"/>
<!--计数类型为1,2,3…-->
<param name="CountDirection" value="1"/>
<!--记录的格式。⼀般⽤log4net.Layout.PatternLayout布局-->
<layout type="log4net.Layout.PatternLayout,log4net">
<param name="Header" value="[Header] "/>
<param name="Footer" value="[Footer] "/>
<param name="ConversionPattern" value="%d [%t] %-5p %c [%x] - %m%n"/>
</layout>
<!--记录的格式。⼀般⽤log4net.Layout.PatternLayout布局--><!--⽤⾃定义布局测试失败-->
<!--此处⽤继承了log4net.Layout.PatternLayout的⾃定义布局,TGLog.ExpandLayout2为命名空间。%property{Operator}、%property{Action}是⾃定义的输出-->
<!--<layout type="TGLog.ExpandLayout2.ReflectionLayout,TGLog">
<param name="ConversionPattern" value="记录时间:%date 线程ID:[%thread] ⽇志级别:%-5level 记录类:%logger 操作者ID:%property{Operator} 操作类型:%property{Action}%n 当前机器名:%property%n当前机器名及登录⽤ </layout>-->
<!--过滤设置,LevelRangeFilter为使⽤的过滤器-->
<filter type="log4net.Filter.LevelRangeFilter">
<param name="LevelMin" value="DEBUG"/>
<param name="LevelMax" value="WARN"/>
</filter>
</appender>
<!--<appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender,log4net" >
<layout type="log4net.Layout.PatternLayout,log4net">
<param name="ConversionPattern" value="%d [%t] %-5p %c [%x] - %m%n" />
</layout>
</appender>-->
</log4net>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5"/>
</startup>
</configuration>
注意:
1)在项⽬中添加对log4net.dll的引⽤;
2)程序启动时读取log4net的配置⽂件:我建得WindowsForm项⽬,在Main⽅法中添加不顶事,在AssemblyInfo.cs⽂件中可以。
如果是CS程序,在根⽬录的Program.cs中的Main⽅法中添加:
log4net.Config.XmlConfigurator.Configure();
如果是BS程序,在根⽬录的Global.asax.cs(没有新建⼀个)中的Application_Start⽅法中添加:
log4net.Config.XmlConfigurator.Configure();
⽆论BS还是CS程序都可直接在项⽬的AssemblyInfo.cs⽂件⾥添加以下的语句:
[assembly: log4net.Config .XmlConfigurator()]
3.修改fig⽂件:如上所⽰
4.在程序中使⽤
private void button1_Click(object sender, EventArgs e)
{
//wwwblogs/zhangchenliang/p/4546352.html
//Log4net使⽤很⽅便,先申明⼀个封装类ILog 的对象,如下:其中"ReflectionLayout"便是我们⾃定义的⽇志对象<logger> 的name的值。
log4net.ILog log = log4net.LogManager.GetLogger("TestLogger");
try
{
log.Debug(DateTime.Now.ToString() + "这是⼀个测试!");
}
catch (Exception ec)
{
log.Error(DateTime.Now.ToString() + "出现错误!", ec);
}
}
5.查看⽇志⽂件
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论