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

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

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

    posts - 64,  comments - 9,  trackbacks - 0

    如果運行web應用(非spring框架也會出現),后臺出現如下警告信息:
    log4j:WARN No appenders could be found for logger
    (org.springframework.context.support.ClassPathXmlApplicationContext).
    log4j:WARN Please initialize the log4j system properly.

    這是因為 Spring 使用了LOG4J 這個開源框架來輸出信息,要解決這個問題非常簡單,建立LOG4J 的配置文件即可。
    如:
    在src 目錄下創建配置文件,選擇菜單File > New > File,文件名輸入log4j.properties,
    文件內容如下所示:
    log4j.rootLogger=WARN, stdout
    log4j.appender.stdout=org.apache.log4j.ConsoleAppender
    log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
    log4j.appender.stdout.layout.ConversionPattern=%d %p [%c] - %m%n

    加入了這個配置文件后,再次運行程序上面的警告就會消失。尤其在進行 Web 層開發的時
    候,只有加入了這個文件后才能看到Spring 后臺完整的出錯信息。在開發Spring 整合應用
    時,經常有人遇到出現404 錯誤但是卻看不到任何出錯信息的情況,這時你就需要檢查一
    下這個文件是不是存在。

    以上部分來自劉長炯的《MyEclipse 6 Java 開發中文教程》。
    下面是轉的,講的很細致。

    雖然以前一直在用log4j,但是對其配置不甚了了,突然間因為需解決某些問題,要理解log4j的配置,
    然而用google搜了一下,卻發現網上沒有一個簡單直觀的說明,于是只好看log4j的官方介紹,終于
    理解了log4j的配置用法,以下是我對log4j配置的一點認識,如有謬誤還請不吝賜教.

    首先我們搞清楚log4j能干什么,簡單來說就是提供一個記錄不同級別信息內容的日志工具,
    可以把不同級別,不同包路徑的信息,以指定格式輸出到多種設備(控制臺,文件等)
    在程序中,可以以以下方式來使用
       Log log = org.apache.commons.logging.LogFactory.LogFactory.getLog(yourClassName.class);
      log.debug("debug message -------------------");
      log.info("info message ******************");
      log.warn("warn message +++++++++++++++");
      log.error("error msg=================");
      
    本文主要講的是如何配置log4j,先讓我們先看看一個典型的log4j配置:  

    ==========log4j.properties==================

    log4j.appender.stdout=org.apache.log4j.ConsoleAppender
    log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
    log4j.appender.stdout.layout.ConversionPattern=%d{MM-dd HH\:mm\:ss.SSS} %-5p [%F\:%L]%x %m%n

    log4j.appender.fileout=org.apache.log4j.RollingFileAppender
    log4j.appender.fileout.File=D:/workspace/log4jtest/log/application.log
    log4j.appender.fileout.MaxFileSize=10000KB
    log4j.appender.fileout.MaxBackupIndex=10
    log4j.appender.fileout.layout=org.apache.log4j.PatternLayout
    log4j.appender.fileout.layout.ConversionPattern=%d{MM-dd HH:mm:ss.SSS}[%24F:%-3L:%-5p]%x %m%n

    log4j.rootCategory=INFO, stdout, fileout
    log4j.logger.com.wolfsquare.log2=DEBUG,stdout
    ===================================

    這個文件可以劃為三小塊

    ===========第一塊定義了一個名為 stdout 的appender和layout (appender,layout的概念后面再解釋,目前先記著有這樣兩個名詞):

    log4j.appender.stdout=org.apache.log4j.ConsoleAppender
    定義stdout的實際輸出實現類,從這個appender實現類名可以猜到,這個類是負責控制臺輸出的。
    log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
    定義stdout的輸出裝飾器
    log4j.appender.stdout.layout.ConversionPattern=%d{MM-dd HH\:mm\:ss.SSS} %-5p [%F\:%L]%x %m%n
    裝飾器參數配置


    ============第二塊定義了一個名為 fileout 的appender和layout:
    log4j.appender.fileout=org.apache.log4j.RollingFileAppender
    同理可猜這個實現類是輸出到文件的
    log4j.appender.fileout.File=D:/workspace/log4jtest/log/application.log
    log4j.appender.fileout.MaxFileSize=10000KB
    log4j.appender.fileout.MaxBackupIndex=10
    log4j.appender.fileout.layout=org.apache.log4j.PatternLayout
    log4j.appender.fileout.layout.ConversionPattern=%d{MM-dd HH:mm:ss.SSS}[%24F:%-3L:%-5p]%x %m%n

    ============第三塊定義了名字分別為rootCategory,log4j.logger.com.wolfsquare.log2的兩個logger
    log4j.rootCategory=INFO, stdout, fileout
    log4j.logger.com.wolfsquare.log2=DEBUG,stdout

    rootCategory logger是缺省的logger,記錄所有的包的信息輸出。
    第二個logger是只輸出指定包com.wolfsquare.log2下的日志信息。
    那么INFO,DEBUG又是什么意思呢,他們是信息的分級標識,通過繼承實現這個實現自定義級別的分級。
    第三塊配置兩句的意思是這樣的:
    rootCategory 把所有類的INFO級別以上的信息輸出到stdout和fileout兩個appender中,
    logger.com.wolfsquare.log2,把com.wolfsquare.log2包中的所有類(包括子包)DEBUG級別(含)以上的信息輸出到stdout 中
    一個logger可以輸出到很多個設備中(appender),如果需要增加輸出設備則用分號分隔開appender名稱即可。

    輸出信息的分類級別是DEBUG > INFO > WARN > ERROR,信息細節由細到粗,指定輸出某一級別的信息時,
    過細的信息輸出將會被忽略

    如果一個配置中有多個logger,他們之間會有什么關系呢?答案是,在輸出上,他們沒有任何關系,都是獨立運作的,
    不相關的,但是在配置上,父包的配置會傳給子包,如果子包沒有另外定義配置的話。
    例如上面配置文件中的兩個logger:
    log4j.logger.com.wolfsquare
    log4j.logger.com.wolfsquare.log2

    這里認為 log4j.logger.com.wolfsquare.log2 繼承自 log4j.logger.com.wolfsquare,他們的配置聲明如下:
    log4j.rootCategory=INFO, stdout, fileout
    log4j.logger.com.wolfsquare.log2=,stdout
    注意第二句沒有指定輸出級別,那么根據配置繼承規則會繼承父logger的配置,在這里就是INFO。

    同時需要強調的是,如果兩個logger有繼承關系,且輸出到同一個appender,根據輸出獨立原則,那么將會出現兩行一樣的信息,
    例如上面的兩個logger定義會導致這樣的情況。
    最后以一幅圖來概括:


    posted on 2009-07-02 13:10 super_nini 閱讀(322) 評論(0)  編輯  收藏

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


    網站導航:
     
    <2009年7月>
    2829301234
    567891011
    12131415161718
    19202122232425
    2627282930311
    2345678

    常用鏈接

    留言簿

    隨筆檔案

    文章檔案

    相冊

    搜索

    •  

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: fc2免费人成为视频| 国产精品免费久久久久电影网| 美女被cao网站免费看在线看| 亚洲一本大道无码av天堂| 日韩电影免费在线观看网址 | 亚洲婷婷在线视频| 最近免费2019中文字幕大全| 久久精品国产亚洲av高清漫画| 可以免费观看的国产视频| 久久亚洲精精品中文字幕| 最近2019年免费中文字幕高清| 亚洲一区二区三区免费在线观看| 中国在线观看免费国语版| 亚洲欧美日韩中文字幕一区二区三区 | 国产成人久久AV免费| 久久久亚洲AV波多野结衣| 免费毛片a在线观看67194| 亚洲午夜精品久久久久久app| 国产精品99久久免费| 国产特黄一级一片免费| 亚洲成a人片在线观看中文动漫| 91精品国产免费久久国语麻豆| 亚洲av无码专区在线| mm1313亚洲国产精品美女| 二区久久国产乱子伦免费精品| 久久久久亚洲精品无码蜜桃| 一二三四在线播放免费观看中文版视频| 亚洲人成色在线观看| 超清首页国产亚洲丝袜| 99国产精品视频免费观看| 亚洲欧美日韩综合久久久| AV在线播放日韩亚洲欧| 亚洲高清视频免费| 小说专区亚洲春色校园| 国产精品亚洲片在线观看不卡| 皇色在线视频免费网站| 九九九国产精品成人免费视频| 亚洲国产精品SSS在线观看AV | 97免费人妻在线视频| 美女被免费视频网站a| 无码乱人伦一区二区亚洲一|