走自己的路

          路漫漫其修遠兮,吾將上下而求索

            BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
            50 隨筆 :: 4 文章 :: 118 評論 :: 0 Trackbacks
           
          1. Log4j debug log api不夠豐富

          在進入,退出方法時針對方法的輸入?yún)?shù)和返回值進行l(wèi)og,log中含有方法信息

          logDebugOnMethodEntry, logDebugOnMethodExit

          1. log級別問題

          如果log級別設(shè)置的是info,會把warning,error,fatal都打出來,各個級別不能單獨控制。增加各級別分開控制開關(guān)。

          1. log格式的定制

          可以定制log信息的pattern,這樣會看起來很統(tǒng)一,log分析起來也容易logDebug(String pattern, Object... paramValues);

          還有一個好處,不需要預(yù)先把相關(guān)String都append起來,提高performance

          1. log.isDebugEnabled();

          參考第三點,這樣就避免了Object的toString和String的concat操作。

          1. EmptyLogger

          每次記log時,log4j都需要判斷這個級別是否可以打log。如果logger的每個級別都有對應(yīng)的logger實例,如果debug level被關(guān)了,debug級別對應(yīng)的實例就是EmptyLogger,EmptyLogger里面所有方法的實現(xiàn)都是空的,就不需要這額外的判斷了。




          posted on 2009-12-25 15:09 叱咤紅人 閱讀(2863) 評論(2)  編輯  收藏 所屬分類: Design and Analysis Pattern J2SE and JVM

          評論

          # re: 對Log4j封裝的一些想法[未登錄] 2009-12-26 09:15 aaa
          關(guān)于isDebugEnabled,你就算實現(xiàn)了一個空的EmptyLogger也沒有用吧。
          我記得寫log.isDebugEnabled是為了防止某些字符串拼接的開銷。
          比如log.debug(xxx+xxx+xxx);  回復(fù)  更多評論
            

          # re: 對Log4j封裝的一些想法 2009-12-27 09:47 叱咤紅人
          @aaa
          是的,是我記混了。我們公司有一個log framework對Log4J做了一層封裝,把log的方法的參數(shù)都改成String了,但還有一些提供的方法,會把object都toString后再調(diào)用那些封裝過的參數(shù)為String的log方法,所以出現(xiàn)了預(yù)先toString的情況。于是我們在寫的時候也需要isDebugEnabled。沒有和log4j的區(qū)分清楚,已經(jīng)改正,您說的是我說的第四點,現(xiàn)在的第三點,恩,謝謝提醒。

            回復(fù)  更多評論
            

          主站蜘蛛池模板: 古浪县| 桦南县| 武汉市| 都匀市| 孟州市| 墨脱县| 姜堰市| 新田县| 天水市| 玉山县| 巨野县| 康定县| 金阳县| 南部县| 信宜市| 浦县| 怀集县| 长乐市| 龙井市| 浙江省| 保德县| 曲靖市| 布尔津县| 宝鸡市| 孝昌县| 泰宁县| 弥勒县| 天长市| 左权县| 玉林市| 昭苏县| 双城市| 原阳县| 若尔盖县| 阳城县| 滕州市| 桑植县| 吴堡县| 卓尼县| 台东市| 兴隆县|