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

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

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

    云自無心水自閑

    天平山上白云泉,云自無心水自閑。何必奔沖山下去,更添波浪向人間!
    posts - 288, comments - 524, trackbacks - 0, articles - 6
      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

    Log4j 簡要剖析

    Posted on 2007-06-23 09:11 云自無心水自閑 閱讀(800) 評論(0)  編輯  收藏 所屬分類: Java

    Log4j

    Log4j的核心是3大組件:Logger、Appender、Layout。

    首先是Logger,Logger的意義在于它不象System.out,它可以根據需要屏蔽部分的Log輸出,同時其他的Log輸出不受影響。
    一、Logger有層次結構。有了層次結構就意味著有了繼承關系,也就意味著可以重用。這似乎和面向對象語言很想象。
    Logger都是有名稱的,而Logger的名稱和Java一樣,也是XXX.XXX.XXX,和Java一樣的規則,相當簡單。類似于Java中的Object,Logger的存在一個默認的根節點:root

    Logger的名稱一般這樣獲得:
    Logger logger = Logger.getLogger("XXX.XXX.XXX");
    或者
    Logger logger = Logger.getLogger(this.getClass());
    Log4j并沒有強制要求用類名作為Logger的名稱,但是這是推薦的做法。

    二、有了層次結構后,就要說一下級別了,文章開始的時候就提到,Log4j的優勢就在于能夠根據需要過濾Log的輸出,主要(不是全部)就是通過級別實現的。
    Log4j把級別分為:Fatal,Error,Warn,Info,Debug。這樣的區分也是經過慎重考慮的,如果引入太多的層次,會使得程序開發者在記錄日志的時候,難以選擇,會挑花了眼。
    級別之間存在優先級的高低。
    通過如下語句,輸出不同級別的Log
    logger.debug("...");
    logger.info("...");
    logger.warn("...");
    logger.error("...");
    logger.fatal("...");

    如果Logger的級別設為Warn,那么只有級別比Warn高的語句的Log才會輸出。 比如:logger.debug語句這時不起作用。

    三、層次結構的繼承關系現在便發揮作用了。子節點如果沒有顯式定義級別,那么自動繼承最近的父節點的級別。這樣,就不需要為每一個Logger都去定義級別了,因為至少根節點是存在的,可以從根節點中獲得級別定義。

    四、全局級別,可以通過設置日志的“門檻”,來實現全局強制性的級別控制。
    LoggerResposity reposity = x.getLoggerResposity();
    resposity.setThreshold(Level.WARN); 這完全可以在配置文件中配置。
    這樣,logger.info語句將不再起作用。

     

    其次是Appender,Appender決定了Log究竟輸出到什么地方,Log4j提供了多重輸出的功能,也就是說可以為Log定義多個輸出地點。
    同樣,層次結構在這里也發揮的威力,子節點的Logger將會繼承父節點的Appender,免去了一個一個定義Appender的工作,根節點默認的Appender的Console。
    當然,也可以設置不繼承父節點的Appender


    最后是Layout,Layout決定了Log的格式。

    Log4j的配置完全可以通過編程實現,對于特別簡單的應用來說,絕對是夠用了。但是,對于稍微大一點的應用,把配置硬編碼在程序中是不靈活的。所以,使用配置配置文件是比較好的選擇。



    主站蜘蛛池模板: 日韩免费电影网址| 免费国产成人α片| 在线看片人成视频免费无遮挡| 久久夜色精品国产噜噜亚洲AV| 未满十八18禁止免费无码网站| 国产成A人亚洲精V品无码| 好久久免费视频高清| 久久亚洲精品AB无码播放 | 国产偷国产偷亚洲清高APP| 天天摸夜夜摸成人免费视频| 亚洲精品无码久久久久A片苍井空| 日本成人免费在线| 一级毛片a女人刺激视频免费| 亚洲午夜激情视频| 精品一卡2卡三卡4卡免费视频| 国产亚洲福利精品一区| 久久永久免费人妻精品下载| 亚洲美女人黄网成人女| 最近免费中文字幕大全| 麻豆安全免费网址入口| 亚洲人成色7777在线观看| 免费无码成人AV在线播放不卡| 亚洲区视频在线观看| 日产乱码一卡二卡三免费| 国产福利在线观看永久免费| 亚洲av无码不卡一区二区三区| 国产福利视精品永久免费| 亚洲AV日韩AV一区二区三曲 | 日本免费大黄在线观看| 亚洲性色高清完整版在线观看| 久久电影网午夜鲁丝片免费| 色妞www精品视频免费看| 亚洲爆乳无码一区二区三区| 91嫩草免费国产永久入口| 亚洲AV成人精品一区二区三区| 亚洲线精品一区二区三区影音先锋| 1000部免费啪啪十八未年禁止观看 | 亚洲国产成人精品电影| 日产乱码一卡二卡三免费| 永久在线观看免费视频| 中文字幕在线观看亚洲日韩|