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