夢想號黃包車wei.lee net-home

          Have my best life at SZ....................

            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
            6 隨筆 :: 3 文章 :: 6 評論 :: 0 Trackbacks

          ???? 日志部分在程序中占了4%,有利于幫助我們很快地得到我們需要的調試信息,找到問題的根源盡快解決問題,從而降低我們的維護成本。這幾天一直斷斷續續地學習Log4net部分,由于知道自己在一個比較長的時間必須去使用.net的部分(HA Project and LIS Project),沒辦法,只有硬著頭皮死肯:),不過也讓我見識不少呢!log4net是appache開源的一個杰作,和log4J很相象,如同孿生的兄弟一樣,基本的概念原理都是一樣的,她主要應用在.net上的。下面是我一些收集的資料,同時也是我在開發過程中的一些經驗總結。稍后也會把一些實際項目的經驗記錄下來,和使用Log4J的相關內容。

          Log4net
          主要有四個組件。分別是Logger(記錄器)Repository()Appender(附著器)Layout(布局)??

          Logger 定義與用途:

          Logger 是應用程序需要交互的主要組件,它用來產生日志消息。產生的日志消息并不直接顯示,還要預先經過 Layout 的格式化處理后才會輸出。

          Root 是一個默認的 Logger ,當一個 root Logger 內容配置一致的時候就會記錄兩條相同的記錄,當在配置文件中找不到 logger 的名字時候,就會使用root的配置。?
          ?

          Repository 定義與用途:

          Repository 主要用于負責日志對象組織結構的維護。現在 已經使用LogManager類來維護日志對象組織。

          ?

          Appender 定義及用途:

          ?? 定義輸出介質,可以把多個 Aappender 附加到一個日志對象中,?一個Appender對象缺省地把所有的日志事件傳遞到輸出流中,我們可以通過Aappender Filters來過濾剩下我們需要的部分。分別有級別過濾(定義級別區間),字符串過濾,可以定義多個filter。such as :LevelMatchFilter、LevelRangeFilter、MDCFilter、NDCFilter、 StringMatchFilter.

          ?

          Layout 定義與用途

          Layout 組件用于向用戶顯示最后經過格式化的輸出信息。可以是線性的或一個 XML 文件。 Layout 組件和一個 Appender 組件一起工作。也就是說一個 appender 對象 只能對應一個 layout 對象。

          ?

          ?

          Log4net DEBUG 信息分級:

          一共有七級

          級別
          允許方法

          Boolean 屬性

          優先級別

          ?

          OFF (拒絕所有的日志請求) ???????????????????? FATAL???????????????????????????????????? ERROR??

          ? null?????????????????????????????????????????????????????????????????? ?void Fatal(...);??????????????????????????? void Error(...);

          ? null??????????????????????????????????????????????????????????????? ??? bool IsFatalEnabled;????????????????? bool IsErrorEnabled;?

          ?Highest????????????????????????????????????????????????????????????? second?????????????????????????????????????? three

          ?

          ?WARN???????????????????????????????????????????????????????????? INFO????????????????????????????????????????DEBUG

          void Warn(...);??????????????????????????????????????????????????? void Info(...);?????????????????????????????void Debug(...);

          bool IsWarnEnabled;? ????????????????????????????????????????bool IsInfoEnabled;???????????????????bool IsDebugEnabled;

          four????????????????????????????????????????????????????????????????????five???????????????????????????????????????????six

          ?

          ALL (允許所有的日志請求)

          ?Null

          ?Null

          ?Lowest

          ?

          Log4net 配置方式:

          1. 在單獨文件里配置(推薦):改變配置不需要重新編譯代碼,同時也可以在程序運行的過程中修改代碼。

          2. 在程序代碼中配置

          ?

          關聯配置文件:

          log4net 框架使用 log4net.Config.DOMConfiguratorAttribute log4net.Config.XmlConfigurator 在程序集的級別上定義配置文件。方法有多種的:
          1
          .可以在項目的 AssemblyInfo.cs 文件里添加以下的語句

          ? [assembly:log4net.Config.XmlConfigurator(ConfigFile="filename", ? ConfigFileExtension="ext",Watch=true/false)]

          其中 configFile 設定了配置文件的文件名,路徑,擴展名

          configFileExtension 設定了被編譯的文件使用擴展名字,默認為 config

          但是configFileExtension與configFile不能同時使用。在這里我們可以關聯我們手動配置的文件,而不使用.net給我們的應用程序配置文件。
          eg:
          [assembly:log4net.Config.DOMConfigurator(ConfigFile="/Projects/Regular/bin/config/App.log.conf.xml",Watch=true)]?

          2 .可以不帶參數應用 DOMConfiguratio():

          ?

          ?[assembly: log4net.Config.DOMConfigurator()]

          3. 也可以在程序代碼中用 DOMConfigurator 類打開配置文件。類的構造函數需要一個 FileInfo 對象作參數,以指出要打開的配置文件名。

          log4net.Config.DOMConfigurator.Configure(

          ?

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

          ?

          創建日志對象:

          當日志對象沒有在配置文件中定義的話,就會使用 root 的祖父節點。

          Log4net.ILog log = Log4net.LogManager.GetLogger("MyLogger");

          ?

          輸出日志信息:

          可以使用輸出日志的幾種方式:fatal();error();warn();info();debug();

          if (log.IsDebugEnabled) log.Debug("message");

          ?

          ?

          DEBUG 輸出格式的意義:

          Eg

          <param name="ConversionPattern"

          ?? value="%d [%t] %-5p %c [%x] - %m%n"

          ??????? />

          %m(message): 輸出的日志消息,如 ILog.Debug( ) 輸出的一條消息

          %n(new line): 換行

          %d(datetime): 輸出當前語句運行的時刻

          %r(run time): 輸出程序從運行到執行到當前語句時消耗的毫秒數

          %t(thread id): 當前語句所在的線程 ID

          %p(priority): 日志的當前優先級別,即 DEBUG INFO WARN …等

          %c(class): 當前日志對象的名稱,例如:

          ?????? 模式字符串為: %-10c -%m%n

          ?????? 代碼為:

          ILog log=LogManager.GetLogger(“Exam.Log”);

          log.Debug(“Hello”);

          ??? 則輸出為下面的形式:

          Exam.Log?????? - Hello

          %L :輸出語句所在的行號 。包括類目名、發生的線程,以及在代碼中的行數。

          %F :輸出語句所在的文件名

          %- 數字:表示該項的最小長度,如果不夠,則用空格填充

          例如,轉換模式為 %r [%t]%-5p %c - %m%n PatternLayout 將生成類似于以下內容的輸出:

          176 [main] INFO? org.foo.Bar - Located nearest gas station.?
          ?(未完待續)

          posted on 2006-03-28 22:17 Wei.Lee 閱讀(1465) 評論(0)  編輯  收藏 所屬分類: Dot Net 技術

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


          網站導航:
           
          主站蜘蛛池模板: 镇远县| 资阳市| 祥云县| 容城县| 黄大仙区| 酒泉市| 栖霞市| 安阳县| 云梦县| 夏邑县| 三亚市| 阿拉尔市| 准格尔旗| 孝昌县| 江西省| 容城县| 衡水市| 峨边| 祁连县| 富民县| 茶陵县| 牡丹江市| 离岛区| 常德市| 米林县| 荥阳市| 江城| 原阳县| 渝北区| 兴隆县| 华宁县| 若羌县| 高唐县| 灵寿县| 九台市| 胶州市| 黎川县| 舟山市| 黄骅市| 贺兰县| 富源县|