空間站

          北極心空

            BlogJava :: 首頁 :: 聯(lián)系 :: 聚合  :: 管理
            15 Posts :: 393 Stories :: 160 Comments :: 0 Trackbacks

          擴充Log4j日志級別的方法

          我們的項目需要記不同類型,不同格式,不同級別的日志。一般來說很容易想到Log4j,的確用它來寫日志很方便,但是我們的項目對日志的需求有一點超出了它本身的處理能力:log4j只有debug,info,warn,error四種級別定義,而我們的日志不只這四類,還有serious,checkout等,如果直接用log4j的log.debug(),log.warn()....是不會寫諸如
          serious:XXXX:20060708
          checkout:xxxxx:20060708這種形式的日志內(nèi)容的
           
          看了看資料,log4j的日志級別是通過Level類來實現(xiàn)的,log.warn(Object)實際調(diào)用的logger.log(Level,Object)方法
          這樣就好辦了,寫一個類繼承Log4j的Level類,擴充其日志級別,然后封裝log4j的logger類,在封裝的類中調(diào)用logger.log(擴充的Level類,Object)就可以了,具體步驟如下:
           
          1:寫一個類繼承Level,override父類的構(gòu)造函數(shù),比如我們需要Serious級別
          private static class SeriousLevel extends Level {
                 private SeriousLevel(int level, String name, int sysLogLevel) {
                      super(level, name, sysLogLevel);
                 }
           }

          2:把這些繼承Level的子類歸到一個接口中,便于統(tǒng)一調(diào)用
          public interface  MyLogLevel
          {
             public static final Level SERIOUS_LEVEL = new SeriousLevel(Priority.ERROR_INT, "SERIOUS", SyslogAppender.LOG_LOCAL0);
             public static final Level ALARM_LEVEL = new AlarmLevel(Priority.DEBUG_INT + 50, "ALARM", SyslogAppender.LOG_LOCAL0);
            ......
             
          }
          Priority.ERROR_INT是log4j的級別定義,通過這個我們可以定義自己的級別的大小,比如上述ALARM_LEVEL就比SERIOUS_LEVEL日志級別要高50點

          3:封裝Log4j的Logger,新增serious(Object) alarm(Object)等方法,在方法中調(diào)用Logger.log(Level,Object)來傳入我們自己的日志level
          public class MyLogger{
           private Logger log ;
           .......
           
           
           public void serious(Object pm_objLogInfo)
           {
              log.loger(MyLogLevel.SERIOUS_LEVEL,pm_objLogInfo); 
             /*MyLogLevel接口中的所有自定義日志級別都繼承自Level*/
           }
           
           public void serious(Object pm_objLogInfo)
           {
              log.loger(MyLogLevel.ALARM_LEVEL,pm_objLogInfo);
           }
           ......
          }
           
           
          4:ok!這就搞定了,Log4j新增了Serious,Alarm等級別,在你的log4j.conf(or log4j.property)配置你需要的日志級別,然后在你的寫日志的代碼中如此調(diào)用即可:
          .....
          Mylogger loger = new MyLogger();
          loger.serious("嚴重錯誤!");
          ......
          posted on 2008-06-23 09:23 蘆葦 閱讀(8216) 評論(1)  編輯  收藏 所屬分類: JAVA 、其他

          Feedback

          # re: 擴充Log4j日志級別的方法 2012-02-24 17:17 2
          2  回復(fù)  更多評論
            

          主站蜘蛛池模板: 潮州市| 铁岭县| 公安县| 柯坪县| 邛崃市| 湄潭县| 锡林浩特市| 吴江市| 灵璧县| 新宁县| 景洪市| 黎平县| 荃湾区| 射阳县| 沽源县| 敖汉旗| 东港市| 西青区| 轮台县| 密云县| 玛纳斯县| 通渭县| 北海市| 宿迁市| 长岭县| 延长县| 桦南县| 醴陵市| 阿尔山市| 达日县| 宜黄县| 冕宁县| 广丰县| 中方县| 尖扎县| 民乐县| 商河县| 莱芜市| 潢川县| 梅州市| 博罗县|