<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

    如果運(yùn)行web應(yīng)用(非spring框架也會(huì)出現(xiàn)),后臺(tái)出現(xiàn)如下警告信息:
    log4j:WARN No appenders could be found for logger
    (org.springframework.context.support.ClassPathXmlApplicationContext).
    log4j:WARN Please initialize the log4j system properly.

    這是因?yàn)?Spring 使用了LOG4J 這個(gè)開(kāi)源框架來(lái)輸出信息,要解決這個(gè)問(wèn)題非常簡(jiǎn)單,建立LOG4J 的配置文件即可。
    如:
    在src 目錄下創(chuàng)建配置文件,選擇菜單File > New > File,文件名輸入log4j.properties,
    文件內(nèi)容如下所示:
    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

    加入了這個(gè)配置文件后,再次運(yùn)行程序上面的警告就會(huì)消失。尤其在進(jìn)行 Web 層開(kāi)發(fā)的時(shí)
    候,只有加入了這個(gè)文件后才能看到Spring 后臺(tái)完整的出錯(cuò)信息。在開(kāi)發(fā)Spring 整合應(yīng)用
    時(shí),經(jīng)常有人遇到出現(xiàn)404 錯(cuò)誤但是卻看不到任何出錯(cuò)信息的情況,這時(shí)你就需要檢查一
    下這個(gè)文件是不是存在。

    以上部分來(lái)自劉長(zhǎng)炯的《MyEclipse 6 Java 開(kāi)發(fā)中文教程》。
    下面是轉(zhuǎn)的,講的很細(xì)致。

    雖然以前一直在用log4j,但是對(duì)其配置不甚了了,突然間因?yàn)樾杞鉀Q某些問(wèn)題,要理解log4j的配置,
    然而用google搜了一下,卻發(fā)現(xiàn)網(wǎng)上沒(méi)有一個(gè)簡(jiǎn)單直觀的說(shuō)明,于是只好看log4j的官方介紹,終于
    理解了log4j的配置用法,以下是我對(duì)log4j配置的一點(diǎn)認(rèn)識(shí),如有謬誤還請(qǐng)不吝賜教.

    首先我們搞清楚log4j能干什么,簡(jiǎn)單來(lái)說(shuō)就是提供一個(gè)記錄不同級(jí)別信息內(nèi)容的日志工具,
    可以把不同級(jí)別,不同包路徑的信息,以指定格式輸出到多種設(shè)備(控制臺(tái),文件等)
    在程序中,可以以以下方式來(lái)使用
       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,先讓我們先看看一個(gè)典型的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
    ===================================

    這個(gè)文件可以劃為三小塊

    ===========第一塊定義了一個(gè)名為 stdout 的appender和layout (appender,layout的概念后面再解釋?zhuān)壳跋扔浿羞@樣兩個(gè)名詞):

    log4j.appender.stdout=org.apache.log4j.ConsoleAppender
    定義stdout的實(shí)際輸出實(shí)現(xiàn)類(lèi),從這個(gè)appender實(shí)現(xiàn)類(lèi)名可以猜到,這個(gè)類(lèi)是負(fù)責(zé)控制臺(tái)輸出的。
    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
    裝飾器參數(shù)配置


    ============第二塊定義了一個(gè)名為 fileout 的appender和layout:
    log4j.appender.fileout=org.apache.log4j.RollingFileAppender
    同理可猜這個(gè)實(shí)現(xiàn)類(lèi)是輸出到文件的
    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的兩個(gè)logger
    log4j.rootCategory=INFO, stdout, fileout
    log4j.logger.com.wolfsquare.log2=DEBUG,stdout

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

    輸出信息的分類(lèi)級(jí)別是DEBUG > INFO > WARN > ERROR,信息細(xì)節(jié)由細(xì)到粗,指定輸出某一級(jí)別的信息時(shí),
    過(guò)細(xì)的信息輸出將會(huì)被忽略

    如果一個(gè)配置中有多個(gè)logger,他們之間會(huì)有什么關(guān)系呢?答案是,在輸出上,他們沒(méi)有任何關(guān)系,都是獨(dú)立運(yùn)作的,
    不相關(guān)的,但是在配置上,父包的配置會(huì)傳給子包,如果子包沒(méi)有另外定義配置的話。
    例如上面配置文件中的兩個(gè)logger:
    log4j.logger.com.wolfsquare
    log4j.logger.com.wolfsquare.log2

    這里認(rèn)為 log4j.logger.com.wolfsquare.log2 繼承自 log4j.logger.com.wolfsquare,他們的配置聲明如下:
    log4j.rootCategory=INFO, stdout, fileout
    log4j.logger.com.wolfsquare.log2=,stdout
    注意第二句沒(méi)有指定輸出級(jí)別,那么根據(jù)配置繼承規(guī)則會(huì)繼承父logger的配置,在這里就是INFO。

    同時(shí)需要強(qiáng)調(diào)的是,如果兩個(gè)logger有繼承關(guān)系,且輸出到同一個(gè)appender,根據(jù)輸出獨(dú)立原則,那么將會(huì)出現(xiàn)兩行一樣的信息,
    例如上面的兩個(gè)logger定義會(huì)導(dǎo)致這樣的情況。
    最后以一幅圖來(lái)概括:



     

    posted on 2009-07-02 11:44 super_nini 閱讀(823) 評(píng)論(0)  編輯  收藏

    只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


    網(wǎng)站導(dǎo)航:
     
    <2025年7月>
    293012345
    6789101112
    13141516171819
    20212223242526
    272829303112
    3456789

    常用鏈接

    留言簿

    隨筆檔案

    文章檔案

    相冊(cè)

    搜索

    •  

    最新評(píng)論

    閱讀排行榜

    評(píng)論排行榜

    主站蜘蛛池模板: 免费黄色app网站| 亚色九九九全国免费视频| 国产yw855.c免费视频| 亚洲精品国产第一综合99久久| 日本人的色道免费网站| 亚洲精品第一国产综合精品| 18未年禁止免费观看| 自怕偷自怕亚洲精品| 国产99视频精品免费观看7| 亚洲人成免费网站| 啦啦啦在线免费视频| 特级毛片A级毛片100免费播放| 国产免费观看a大片的网站| 男女啪啪免费体验区| 日韩精品亚洲aⅴ在线影院| 免费毛片a线观看| 亚洲天堂一区二区| 国产91色综合久久免费分享| 亚洲av极品无码专区在线观看| 成年女人喷潮毛片免费播放| 美女视频黄视大全视频免费的| 亚洲高清偷拍一区二区三区| 拍拍拍无挡免费视频网站| 亚洲日本va午夜中文字幕一区| 无码永久免费AV网站| 国产综合成人亚洲区| 亚洲精品少妇30p| 日本人的色道免费网站| 看亚洲a级一级毛片| 亚洲人精品午夜射精日韩| 99在线观看免费视频| 亚洲AV无码国产剧情| 国产亚洲精品观看91在线| 久久福利资源网站免费看| 美女视频黄.免费网址| 五月天网站亚洲小说| 久久久久国色AV免费观看性色| 一级毛片免费播放视频| 亚洲精品成人网站在线播放| 免费99热在线观看| 最近2019免费中文字幕视频三|