<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    注銷

    注銷

      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
      112 隨筆 :: 7 文章 :: 18 評論 :: 0 Trackbacks
    ?

    Log4net 簡介

    Log4net 是基于 .net 開發的一款非常著名的記錄日志開源組件。他最早是 2001 7 月由 NeoWorks Limited 啟動的項目,基本的框架源于另外的一個非常著名的姐妹組件- log4j Log4net 記錄日志的功能非常強大。它可以將日志分不同的等級,比不同的樣式,將日志輸出到不同的媒介。

    Log4net 可以從 http://logging.apache.org/log4net/downloads.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數據庫中。

    一)主要代碼:

    1. 配置文件app.config

    ?1 <? xml?version="1.0"?encoding="utf-8"? ?>
    ?2 < configuration >
    ?3 ???? <!-- ?Register?a?section?handler?for?the?log4net?section? -->
    ?4 ???? < configSections >
    ?5 ???????? < section? name ="log4net" ?type ="System.Configuration.IgnoreSectionHandler" ? />
    ?6 ???? </ configSections >
    ?7 ???? < appSettings >
    ?8 ???????? <!-- ?To?enable?internal?log4net?logging?specify?the?following?appSettings?key? -->
    ?9 ???????? <!-- ?<add?key="log4net.Internal.Debug"?value="true"/>? --> </ appSettings >
    10 ???? <!-- ?This?section?contains?the?log4net?configuration?settings? -->
    11 ???? < log4net >
    12 ???????? <!-- 定義輸出到文件中 -->
    13 ???????? < appender? name ="LogFileAppender" ?type ="log4net.Appender.FileAppender" >
    14 ???????????? <!-- 定義文件存放位置 -->
    15 ???????????? < file? value ="D:\log-file1.txt" ? />
    16 ???????????? <!-- ?Example?using?environment?variables?in?params? -->
    17 ???????????? <!-- ?<file?value="${TMP}\log-file.txt"?/>? -->
    18 ???????????? <!-- <sppendToFile?value="true"?/> -->
    19 ???????????? <!-- ?An?alternate?output?encoding?can?be?specified? -->
    20 ???????????? <!-- ?<encoding?value="unicodeFFFE"?/>? -->
    21 ???????????? < layout? type ="log4net.Layout.PatternLayout" >
    22 ???????????????? <!-- 每條日志末尾的文字說明 -->
    23 ???????????????? < footer? value ="[Footer]--Test?By?Ring1981? " ? />
    24 ???????????????? <!-- 輸出格式 -->
    25 ???????????????? < conversionPattern? value ="%date?[%thread]?%-5level?%logger?[%ndc]?&lt;%property{auth}&gt;?-?%message%newline" ? />
    26 ???????????? </ layout > ????????????
    27 ???????? </ appender >
    28 ???????? <!-- 定義輸出到控制臺命令行中 -->
    29 ???????? < appender? name ="ConsoleAppender" ?type ="log4net.Appender.ConsoleAppender" > ????????????
    30 ???????????? < layout? type ="log4net.Layout.PatternLayout" >
    31 ???????????????? < conversionPattern? value ="%date?[%thread]?%-5level?%logger?[%property{NDC}]?-?%message%newline" ? />
    32 ???????????? </ layout >
    33 ???????? </ appender >
    34 ???????? <!-- 定義輸出到windows事件中 -->
    35 ???????? < appender? name ="EventLogAppender" ?type ="log4net.Appender.EventLogAppender" >
    36 ???????????? < layout? type ="log4net.Layout.PatternLayout" >
    37 ???????????????? < conversionPattern? value ="%date?[%thread]?%-5level?%logger?[%property{NDC}]?-?%message%newline" ? />
    38 ???????????? </ layout >
    39 ???????? </ appender >
    40 ???????? <!-- 定義輸出到數據庫中,這里舉例輸出到Access數據庫中,數據庫為D盤的access.mdb -->
    41 ???????? < appender? name ="AdoNetAppender_Access" ?type ="log4net.Appender.AdoNetAppender" >
    42 ???????????? < connectionString? value ="Provider=Microsoft.Jet.OLEDB.4.0;Data?Source=D:\access.mdb" ? />
    43 ???????????? < commandText? value ="INSERT?INTO?Log?([Date],[Thread],[Level],[Logger],[Message])?VALUES?(@log_date,?@thread,?@log_level,?@logger,?@message)" ? />
    44 ???????????? <!-- 定義各個參數 -->
    45 ???????????? < parameter >
    46 ???????????????? < parameterName? value ="@log_date" ? />
    47 ???????????????? < dbType? value ="String" ? />
    48 ???????????????? < size? value ="255" ? />
    49 ???????????????? < layout? type ="log4net.Layout.PatternLayout" >
    50 ???????????????????? < conversionPattern? value ="%date" ? />
    51 ???????????????? </ layout >
    52 ???????????? </ parameter >
    53 ???????????? < parameter >
    54 ???????????????? < parameterName? value ="@thread" ? />
    55 ???????????????? < dbType? value ="String" ? />
    56 ???????????????? < size? value ="255" ? />
    57 ???????????????? < layout? type ="log4net.Layout.PatternLayout" >
    58 ???????????????????? < conversionPattern? value ="%thread" ? />
    59 ???????????????? </ layout >
    60 ???????????? </ parameter >
    61 ???????????? < parameter >
    62 ???????????????? < parameterName? value ="@log_level" ? />
    63 ???????????????? < dbType? value ="String" ? />
    64 ???????????????? < size? value ="50" ? />
    65 ???????????????? < layout? type ="log4net.Layout.PatternLayout" >
    66 ???????????????????? < conversionPattern? value ="%level" ? />
    67 ???????????????? </ layout >
    68 ???????????? </ parameter >
    69 ???????????? < parameter >
    70 ???????????????? < parameterName? value ="@logger" ? />
    71 ???????????????? < dbType? value ="String" ? />
    72 ???????????????? < size? value ="255" ? />
    73 ???????????????? < layout? type ="log4net.Layout.PatternLayout" >
    74 ???????????????????? < conversionPattern? value ="%logger" ? />
    75 ???????????????? </ layout >
    76 ???????????? </ parameter >
    77 ???????????? < parameter >
    78 ???????????????? < parameterName? value ="@message" ? />
    79 ???????????????? < dbType? value ="String" ? />
    80 ???????????????? < size? value ="1024" ? />
    81 ???????????????? < layout? type ="log4net.Layout.PatternLayout" >
    82 ???????????????????? < conversionPattern? value ="%message" ? />
    83 ???????????????? </ layout >
    84 ???????????? </ parameter >
    85 ???????? </ appender >
    86 ???????? <!-- 定義日志的輸出媒介,下面定義日志以四種方式輸出。也可以下面的按照一種類型或其他類型輸出。 -->
    87 ???????? < root >
    88 ???????????? < appender-ref? ref ="LogFileAppender" ? />
    89 ???????????? < appender-ref? ref ="ConsoleAppender" ? />
    90 ???????????? < appender-ref? ref ="EventLogAppender" ? />
    91 ???????????? < appender-ref? ref ="AdoNetAppender_Access" ? />
    92 ???????? </ root >
    93 ???? </ log4net >
    94 </ configuration >

    2. LoggingExample.cs

    ?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}

    posted on 2006-12-19 10:23 注銷..... 閱讀(480) 評論(0)  編輯  收藏

    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 在线a人片天堂免费观看高清| 免费在线人人电影网| 高清永久免费观看| 一本色道久久88亚洲综合| 亚洲欧美日韩综合久久久| 免费无码又爽又刺激聊天APP| 77777_亚洲午夜久久多人| 青青草无码免费一二三区| 亚洲一区免费观看| 一级毛片免费观看不卡的| 久久久久久亚洲精品成人| 51视频精品全部免费最新| 亚洲乱码一二三四区麻豆| 成年私人影院免费视频网站| 亚洲精品亚洲人成在线| 国产公开免费人成视频| 国产精品成人69XXX免费视频| 亚洲乱码无码永久不卡在线| 免费在线观看一级片| 亚洲一区动漫卡通在线播放| 青草草在线视频永久免费| 亚洲免费日韩无码系列| 亚洲人成电影福利在线播放| 免费三级毛片电影片| 亚洲大码熟女在线观看| 综合久久久久久中文字幕亚洲国产国产综合一区首| 国产精品成人啪精品视频免费| 亚洲国产人成网站在线电影动漫 | 亚洲一级毛片免费观看| 噜噜嘿在线视频免费观看| 美女露隐私全部免费直播| 亚洲深深色噜噜狠狠爱网站| 青青草无码免费一二三区| 亚洲综合激情五月丁香六月| 免费一级黄色毛片| 日韩人妻无码精品久久免费一| 亚洲日韩AV一区二区三区中文 | 亚洲人妻av伦理| 8x8×在线永久免费视频| 亚洲AV无码一区二区三区网址| 亚洲视频在线精品|