log4 之 appender root logger https://www.cnblogs.com/wiseblog/articles/5596456.html

1.0 appender

<appender>是<configuration>的子节点,是负责写日志的组件。

<appender>属性name。name指定appender名称

参数名

描述

layout

可以有0或者说1个layout,当没有layout时,没有输出。具体配置在下面的layout项说明: 参考:http://www.cnblogs.com/wiseblog/articles/5596465.html

param

File: 文件路径,如果RollingStyle为CompositeDate,则这里设置为目录,文件名在DatePattern里设置,其他则这里要有文件名。已经扩展支持虚拟目录

AppendToFile: True/false,默认为true。当文件存在时,是否在原文件上追加内容。

MaxSizeRollBackups:  最大变换数量,-1为不限制。用于处理备份文件。表示备份文件的文件最大数目。如果设置为0,表示不备份日志文件,而且当日志文件容量满了之后,将会截断以前的日志信息;如果是自然数,那么当日志备份文件数目满了之后,会删除以前的日志文件备份;如果是负整数,那么将会无限制的增加日志备份文件。

StaticLogFileName: True/false,默认为true。为true时,RollingStyler的date值将无效。且为true时,需要在file里指定文件名,所有日志都会记录在这个文件里

DatePattern: 当rollingStyle为date时,此处可为文件名的生成提供依据

RollingStyle: 创建新文件的方式,可选为Size(按文件大小),Date(按日期),Once(每启动一次创建一个文件),Composite(按日期及文件大小),默认为Composite

Encoding

编码格式

备注:

Log4net的配置信息中,属性可以有两种写法,比如<param name="AppendToFile" value="true" />相当于<AppendToFile value="true" />

案例:

<appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender, log4net">
<param name="File" value="App_Data\Logs\log\log-" />
<param name="AppendToFile" value="true"/>
<param name="MaxSizeRollBackups" value="10"/>
<param name="StaticLogFileName" value="false"/>
<param name="DatePattern" value="yyyy-MM-dd&quot;.log&quot;"/>
<param name="RollingStyle" value="Date"/>
<Encoding value="UTF-8" />
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="%d [%t] %-5p %c [%x] - %m%n"/>
</layout>
</appender>

2.0 root和logger是父子的关系, root,logger是log4的属性;

appender可以理解成log4对象输出的工具

如果把log理解成电脑,那么appender相当于打印机

判断一个类的日志输出情况,首先找到这个类所在的logger(没有特别定义则默认为root),然后根据以上规则判断出这个logger的appender和level。然后既可以知道这个类的哪些日志会被输出到哪些地方了

加载配置文件时,就根椐下列配置创建了一个logger 对象并存放在容器中

 

输出组件配置文件

复制代码
复制代码
 1  <appender name="WiseLogFileAppender" type="log4net.Appender.RollingFileAppender">
 2     <param name="File" value="App_Data\Logs\speedlog\"/>
 3     <param name="AppendToFile" value="true"/>
 4     <param name="MaxSizeRollBackups" value="10"/>
 5     <param name="StaticLogFileName" value="false"/>
 6     <param name="DatePattern" value="yyyy-MM-dd-HH&quot;.log&quot;"/>
 7     <param name="RollingStyle" value="Date"/>
 8     <Encoding value="UTF-8" />
 9     <layout type="log4net.Layout.PatternLayout">
10       <!--
11         <param name="ConversionPattern" value="%d [%t] %-5p %c [%x] - %m%n"/>
12         -->
13       <param name="ConversionPattern" value="%d [%t] %-5p %c - %m%n"/>
14     </layout>
15   </appender>
复制代码
复制代码

日志logger对象配置文件

1   <logger name="speed" additivity="false">
2     <level value="ALL" />
3     <appender-ref ref="WiseLogFileAppender" />
4   </logger>

当加载logger配置文件时,相当于根椐上述配置文件生成一个logger对象存放在容器中,同时指定了这个日志对象的打印级别<level value="ALL" />

与输出组件(通过 <appender-ref ref="WiseLogFileAppender" />)指定,当我们在程序中使用public ILog log = LogManager.GetLogger("speed");

时,相当于从容器中找到一个名为name="speed"的日志对象,并调用期打印日志的方法(如:log.Info("打印日志了");),在打印前他会确认下是否容器中有

名为speed的日志对象,如果没有的,则调用默认root

posted on   高达  阅读(108)  评论(0)    收藏  举报

努力加载评论中...

导航

点击右上角即可分享
微信分享提示