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为Composite或Date,则这里设置为目录,文件名在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"> |
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".log""/> 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