<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

    Logger hierarchy (層次級別)

    Logger 都是已經命名的實體。 Logger 的名稱區分大小寫并遵循以下規則:

    1 如果 A logger 的名稱如果是 B logger 名稱的前綴(通過“ . ”連接),則說 A logger B logger 的祖父級。

    2 如果 A logger 的名稱和 B logger 的名稱之間不存在其他的 logger 名稱,則 A logger B logger 的父級。

    例子: A logger 名稱為“ Foo.Bar ”, B logger 名稱為“ Foo.Bar.Baz ”, A B 的父級。名稱為“ System ”的 logger 是名稱為“ System.Text.StringBuilder ”的祖父級。

    Root logger 位于 logger 層次級別中的頂級。它有例外的三條規則:

    1 Root logger 總是存在的。

    2 Root logger 不能通過名稱或取。

    3 Root logger 有一個默認的 Level 值為 Debug

    Logger 可以通過 log4net.LogManager 類的靜態方法 GetLogger 獲取。

    Level 值: ALL/DEBUG/INFO/WARN/ERROR/FATAL/OFF

    Level 繼承規則:如果一個 logger 沒有定義 Level ,它的 Level 值將從它的父級(定義了 Level )繼承。

    日志紀錄請求通過調用 logger 實例的輸出方法實現。這些輸出方法有 Debug Info Warn Error Fatal

    通過定義,輸出方法決定了日志紀錄請求的 Level 。例如, log 是一個 logger 實例,那么語句 log.Info(“..”) 的日志紀錄請求 Level INFO

    如果日志紀錄請求的 Level logger 本身定義(或繼承)的 Level 高,則請求是可行的,否則不可行。

    簡單規則:如果日志記錄請求的 Level L logger 本身定義(或繼承) Level K ,當 L>=K 時,日志紀錄請求是可行的。

    Level 級別: DEBUG <INFO<WARN<ERROR<FATAL

    通過名稱,調用 log4net.LogManager.GetLogger 方法,可以獲取同一個 logger 的實例引用。這樣在配置了一個 logger 后,不用在代碼中傳遞引用而可以獲取同一個 logger 的引用了。與生物上的親子關系(父親總是先于孩子)基本相反,在 log4net 里, logger 可以被創建和配置成任何順序。特別的是,一個父級 logger 可能比子級 logger 后實例化,但卻可以在子級中查找到。

    ?

    Appender

    Log4net 允許日志以不同的方式輸出,如: ms sql 、文件、控制臺或者系統日志等等。

    一個 logger 可以有多個 Appender 。每一個可行的日志紀錄請求將輸出到所有的 appender ,這些 appender 是在當前這個 logger 中引用的,還包括父級 logger 中引用的。換句話說, appender 將在 logger 的層次級別中添加性的繼承。例如在 root 中定義了一個 Console appender ,那么所有的 logger 至少有一個 Console appender 。如果 A logger 有一個 File appender ,則 A logger 以及它的子 logger 都有兩個 appender

    Additivity 屬性默認為 true ,當設置為 false 時, appender 將采用覆蓋的方式,而不再從父級 logger 中繼承。

    ?

    ?

    Filters 是用來過濾 appender 能接受的日志信息。

    使用以下 filter appender 只接受 Level INFO FATAL 之間的日志紀錄請求。

    <filter type="log4net.Filter.LevelRangeFilter">

    ?????? <param name="LevelMin" value="INFO" />

    ?????? <param name="LevelMax" value="FATAL" />

    </filter>

    ?

    使用以下 filter appender 只接受包含子串為“ database ”的日志紀錄。

    <filter type="log4net.Filter.StringMatchFilter">

    ?????? <param name="StringToMatch" value="database" />

    </filter>

    <filter type="log4net.Filter.DenyAllFilter" />

    第一個 filter 將會在日志紀錄信息中查找“ database ”,如果找到則不再匹配下面得 filter appener 接受并紀錄該日志。如果沒有找到則繼續使用第二個 filter ,該 filter 將拒絕任何日志信息。

    ?

    Layouts 用來定制輸出格式。

    ?

    加載配置

    ConfigFile 屬性:當我們自己定義了一個 log4net 的配置文件時,可以通過這個屬性來指定配置文件。

    ConfigFileExtension 屬性:當應用程序會編譯成不同擴展名稱的程序集時,可以使用這個屬性。如 Sample 程序將編譯成 Sample.exe ,則 ConfigFileExtension 設置為“ config ”,那么所使用的配置文件名稱為: Sample.exe.config 。注意不能和 ConfigFile 屬性同時使用。

    Watch 屬性:在運行期間是否監測配置文件。當值為 true 時, FileSystemWatcher 將用來監視配置文件的內容改變、重命名和刪除通知。

    ?

    為應用程序加載 log4net 的配置,可以通過在應用程序集中設置屬性。

    例如:

    [assembly: log4net.Config.DOMConfigurator(ConfigFile="Sample.config")]

    [assembly: log4net.Config.DOMConfigurator(ConfigFileExtension="config")]

    也可以不使用任何參數,這時將使用應用程序的配置文件。

    [assembly: log4net.Config.DOMConfigurator()]

    ?

    另一種方式是在代碼中使用 DOMConfigurator

    log4net.Config.DOMConfigurator.Configure(

    new FileInfo("TestLogger.Exe.Config"));

    使用 ConfigureAndWatch(..) 可以指定一個配置文件并且監視該文件的變化。

    												
    														
    																
    																		?
    																
    														
    												
    										

    PatternLayout

    每一種指定的轉換符號都以 % 開始,后面跟著一個可選的格式符號和一個轉換符號。轉換符號用來指定輸出的數據類型,如 Level logger date 等。

    例如:轉換模型“ %-5p [%t]: %m%n

    ?????? ?ILog log = LogManager.GetLogger(typeof(TestApp));

    ?????? ?log.Debug("Message 1");

    ?????? ?log.Warn("Message 2");??

    轉換后:

    ?????? ?DEBUG [main]: Message 1

    ?????? ?WARN? [main]: Message 2

    %-5p ”表示輸出日志紀錄請求的 Level 值,寬度為 5 個子符,并左對齊。

    ?

    轉換符號列表:

    a

    輸出創建日志的 AppDomain 的名稱

    c

    默認輸出 logger 的全名稱。后面可跟“ { 數字 } ”,則表示輸出與數字對應的 logger 名稱級別(從右邊開始)。如全名為“ a.b.c ”,“ %c{2} ”輸出“ b.c

    C

    輸出調用日志紀錄請求的類名。后面可跟“ { 數字 } ”,表示輸出與數字對應的類名稱(包含命名空間,從右邊開始)。

    d

    輸出日志記錄時間,后可跟“ { 時間格式 } ”。默認為 yyyy-MM-dd HH:mm:ss,fff

    F

    輸出調用日志紀錄請求的文件全名。(會影響速度)

    l

    輸出調用日志紀錄請求的一些本地信息。如類和成員名,調用文件和調用聲明的代碼行數。(極其影響性能)

    L

    輸出調用日志紀錄請求的聲明代碼行數。(極其影響性能)

    m

    輸出應用程序所要輸出的信息。

    M

    輸出調用日志紀錄請求的成員名稱。(極其影響性能)

    n

    輸出換行符號

    p

    輸出日志請求的 Level

    P

    ?

    r

    輸出從應用程序啟動開始到日志紀錄請求的時間(毫秒)

    t

    輸出產生日志的線程名稱,如果沒有名稱則輸出線程的編號

    u

    輸出當前活動用戶的名稱。( Principal.Identity.Name

    W

    輸出當前活動用戶的 windows 標識。

    x

    ?

    X

    ?

    %

    輸出一個 %


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

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


    網站導航:
     
    主站蜘蛛池模板: 无码日韩精品一区二区免费暖暖| 亚洲日韩小电影在线观看| 午夜免费啪视频在线观看| 色五月五月丁香亚洲综合网| 亚洲AV日韩精品久久久久久| 亚洲第一页日韩专区| 最近中文字幕mv免费高清电影| 日韩内射激情视频在线播放免费| 成人国产网站v片免费观看 | 久久久精品午夜免费不卡| 免费一级毛片在线播放视频免费观看永久| 亚洲avav天堂av在线网爱情| 亚洲视频.com| 亚洲AV乱码久久精品蜜桃| 亚洲开心婷婷中文字幕| 亚洲毛片网址在线观看中文字幕| 国产一区二区三区免费视频| 女人18毛片水真多免费看| 一二三四免费观看在线视频中文版| 欧洲人免费视频网站在线| 中文字幕无码日韩专区免费| 人妻在线日韩免费视频| 久久精品免费大片国产大片| 一个人看的免费观看日本视频www| 久久人午夜亚洲精品无码区| 亚洲欧美日韩一区二区三区在线 | 性xxxx视频免费播放直播| 丰满人妻一区二区三区免费视频| 一边摸一边爽一边叫床免费视频| 牛牛在线精品免费视频观看| 免费国产在线精品一区| 免费大片黄在线观看| 一区二区三区精品高清视频免费在线播放 | 国产精品亚洲AV三区| 亚洲av日韩综合一区久热| 亚洲av成人一区二区三区在线播放 | jizz在线免费播放| 老司机精品免费视频| 日本高清不卡aⅴ免费网站| 久久这里只精品99re免费| 久久精品无码专区免费青青|