Log4net使用简介
一?Log4net簡介
Log4net是基于.net開發的一款非常著名的記錄日志開源組件。他最早是2001年7月由NeoWorks?Limited啟動的項目,基本的框架源于另外的一個非常著名的姐妹組件-log4j。Log4net記錄日志的功能非常強大。它可以將日志分不同的等級,比不同的樣式,將日志輸出到不同的媒介。
Log4net可以從http://logging.apache.org/log4net/download.html網站下載最新版本。
二?Log4net核心組成
Log4net主要由五個部分組成,分別為Logger,Appenders,?Filters,?Layouts?和Object?Renders。
一)?????????Logger(日志)
1.?記錄日志的分類:
Log4net能夠以多種方式輸出日志。支持的日志輸出常用的主要媒介有數據庫(包括MS?SQL?Server,?Access,?Oracle9i,Oracle8i,DB2,SQLite,控制臺,文件,事件日志(可以用事件查看器查看)和郵件等多種方式。
2.?日志的級別
Log4net支持多種級別的日志。優先級從高到低依次排列如下:
FATAL?>?ERROR?>?WARN?>?INFO?>?DEBUG
此外還有ALL(允許所有的日志請求)和OFF(拒絕所有的日志請求)這兩種特殊的級別。
二)?????????Appenders
Appenders決定日志輸出的方式。
Appenders必須實現log4net.Appenders.IAppender接口。
Log4net目前支持的輸出方式包括:
1?AdoNetAppender
????將日志記錄到數據庫中。可以采用SQL和存儲過程兩種方式。
2?AnsiColorTerminalAppender
????在ANSI?窗口終端寫下高亮度的日志事件。
3?AspNetTraceAppender
????能用asp.net中Trace的方式查看記錄的日志。
4?BufferingForwardingAppender
????在輸出到子Appenders之前先緩存日志事件。
5?ConsoleAppender
????將日志輸出到控制臺。
6?EventLogAppender
????將日志寫到Windows?Event?Log.?
7?FileAppender
????將日志寫到文件中。
8?LocalSyslogAppender
????將日志寫到local?syslog?service?(僅用于UNIX環境下).?
9?MemoryAppender
????將日志存到內存緩沖區。
10?NetSendAppender
????將日志輸出到Windows?Messenger?service.這些日志信息將在用戶終端的對話框中顯示。
11?RemoteSyslogAppender
????通過UDP網絡協議將日志寫到Remote?syslog?service。
12?RemotingAppender
????通過.NET?Remoting將日志寫到遠程接收端。
13?RollingFileAppender
????將日志以回滾文件的形式寫到文件中。
14?SmtpAppender
????將日志寫到郵件中。
15?TraceAppender
????將日志寫到.NET?trace?系統。
16?UdpAppender
????將日志connectionless?UDP?datagrams的形式送到遠程宿主或以UdpClient的形式廣播。?
三)?????????Filters
Appender對象將日志以缺省的方式傳到輸出流,然后Filter可以按照不同的標準控制日志的輸出。Filter可以再配置文件中配置。最簡單的形式是在appender中寫明一個Threshold.這樣只有級別大于或等于此Threshold的日志才被記錄。
Filters必須實現log4net.Filters.IFilter接口。
四)?????????Layouts
Layouts控制日志顯示的格式樣式。日志的顯示格式如下:
"%timestamp?[%thread]?%-5level?%logger?-?%message%newline"
Timestamp:?表示程序已經開始執行的時間。?單位[毫秒]。
Thread:執行當前代碼的線程。
Level:日志的級別。
Logger:日志相關請求的名稱。
Message: 日志消息。
Layouts還可以控制日志的輸出樣式,比如以普通形式或以xml等形式輸出。
五)?????????Object?Renderers
這是很重要的一項,log4net將按照用戶定義的標準輸出日志消息。
Object?Renders必須實現log4net.ObjectRenderer.IObjectRenerer接口。
三?如何在項目中使用log4net
下面有個基于控制臺的demo,舉例描述了log4net怎么用于輸出日志。
本例中,日志將會記錄到文件,控制臺,事件日至和Access數據庫中。
配置文件
Code<?xml?version="1.0"?encoding="utf-8"??>
<configuration>
??<configSections>
????<section?name="log4net"?type="System.Configuration.IgnoreSectionHandler"/>
??</configSections>
??<appSettings>
??</appSettings>
??<log4net>
????<!--定義輸出到文件中-->
????<appender?name="LogFileAppender"?type="log4net.Appender.FileAppender">
??????<!--定義文件存放位置-->
??????<file?value="D:\log\log4netfile.txt"?/>
??????<appendToFile?value="true"?/>
??????<rollingStyle?value="Date"?/>
??????<datePattern?value="yyyyMMdd-HH:mm:ss"?/>
??????<layout?type="log4net.Layout.PatternLayout">
????????<!--每條日志末尾的文字說明-->
????????<footer?value="by?綠水青山"?/>
????????<!--輸出格式-->
????????<!--樣例:2008-03-26?13:42:32,111?[10]?INFO??Log4NetDemo.MainClass?[(null)]?-?info-->
????????<conversionPattern?value="記錄時間:%date?線程ID:[%thread]?日志級別:%-5level?出錯類:%logger?property:[%property{NDC}]?-?錯誤描述:%message%newline"?/>
??????</layout>
????</appender>
????<!--定義輸出到控制臺命令行中-->
????<appender?name="ConsoleAppender"?type="log4net.Appender.ConsoleAppender">
??????<layout?type="log4net.Layout.PatternLayout">
????????<conversionPattern?value="%date?[%thread]?%-5level?%logger?[%property{NDC}]?-?%message%newline"?/>
??????</layout>
????</appender>
????<!--定義輸出到windows事件中-->
????<appender?name="EventLogAppender"?type="log4net.Appender.EventLogAppender">
??????<layout?type="log4net.Layout.PatternLayout">
????????<conversionPattern?value="%date?[%thread]?%-5level?%logger?[%property{NDC}]?-?%message%newline"?/>
??????</layout>
????</appender>
????<!--定義輸出到數據庫中,這里舉例輸出到Access數據庫中,數據庫為d盤的log4net.mdb-->
????<appender?name="AdoNetAppender_Access"?type="log4net.Appender.AdoNetAppender">
??????<connectionString?value="Provider=Microsoft.Jet.OLEDB.4.0;Data?Source=d:\log\log4net.mdb"?/>
??????<commandText?value="INSERT?INTO?LogDetails([LogDate],[Thread],[Level],[Logger],[Message])?VALUES(@logDate,?@thread,?@logLevel,?@logger,@message)"?/>
??????<!--定義各個參數-->
??????<parameter>
????????<parameterName?value="@logDate"?/>
????????<dbType?value="String"?/>
????????<size?value="240"?/>
????????<layout?type="log4net.Layout.PatternLayout">
??????????<conversionPattern?value="%date"?/>
????????</layout>
??????</parameter>
??????<parameter>
????????<parameterName?value="@thread"?/>
????????<dbType?value="String"?/>
????????<size?value="240"?/>
????????<layout?type="log4net.Layout.PatternLayout">
??????????<conversionPattern?value="%thread"?/>
????????</layout>
??????</parameter>
??????<parameter>
????????<parameterName?value="@logLevel"?/>
????????<dbType?value="String"?/>
????????<size?value="240"?/>
????????<layout?type="log4net.Layout.PatternLayout">
??????????<conversionPattern?value="%level"?/>
????????</layout>
??????</parameter>
??????<parameter>
????????<parameterName?value="@logger"?/>
????????<dbType?value="String"?/>
????????<size?value="240"?/>
????????<layout?type="log4net.Layout.PatternLayout">
??????????<conversionPattern?value="%logger"?/>
????????</layout>
??????</parameter>
??????<parameter>
????????<parameterName?value="@message"?/>
????????<dbType?value="String"?/>
????????<size?value="240"?/>
????????<layout?type="log4net.Layout.PatternLayout">
??????????<conversionPattern?value="%message"?/>
????????</layout>
??????</parameter>
????</appender>
????<!--定義日志的輸出媒介,下面定義日志以四種方式輸出。也可以下面的按照一種類型或其他類型輸出。-->
????<root>
??????<!--文件形式記錄日志-->
??????<appender-ref?ref="LogFileAppender"?/>
??????<!--控制臺控制顯示日志-->
??????<appender-ref?ref="ConsoleAppender"?/>
??????<!--Windows事件日志-->
??????<appender-ref?ref="EventLogAppender"?/>
??????<!--?如果不啟用相應的日志記錄,可以通過這種方式注釋掉-->
??????<!--<appender-ref?ref="AdoNetAppender_Access"?/>-->
??????
????</root>
????<logger?name="CusLog">
??????
??????
????</logger>
??</log4net>
</configuration>
?
CS示例
?
Code?1//?Configure?log4net?using?the?.config?file
?2[assembly:?log4net.Config.XmlConfigurator(Watch=true)]
?3//?This?will?cause?log4net?to?look?for?a?configuration?file
?4//?called?ConsoleApp.exe.config?in?the?application?base
?5//?directory?(i.e.?the?directory?containing?ConsoleApp.exe)
?6
?7namespace?ConsoleApp
?8{
?9????using?System;
10
11????/**////?<summary>
12????///?Example?of?how?to?simply?configure?and?use?log4net
13????///?</summary>
14????public?class?LoggingExample
15????{
16????????private?static?readonly?log4net.ILog?log?=?log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
17????????
18????????public?static?void?Main(string[]?args)
19????????{
20????????????log.Error("Error?Acc");
21????????????log.Fatal("Fatle?Acc");????????????
22????????????System.Console.ReadLine();
23????????????
24????????}
25
26????}
27}
轉載于:https://www.cnblogs.com/wudingfeng/archive/2008/09/03/1283065.html
總結
以上是生活随笔為你收集整理的Log4net使用简介的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 访百度奥运logo设计师李兴钢:虚实之间
- 下一篇: 有关ArcGIS Server Serv