log4 之 appender root logger


 

 

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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM