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

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

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

    posts - 11, comments - 29, trackbacks - 0, articles - 1
      BlogJava :: 首頁 :: 新隨筆 ::  :: 聚合  :: 管理

    Log4j 簡單配置

    Posted on 2006-01-26 18:09 -=Kinohl=- 閱讀(2822) 評論(2)  編輯  收藏 所屬分類: 讀書筆記

    Log4j 簡單配置
    ***************************************
    關(guān)鍵字:Log4j
    難易度:簡單

    軟件版本:apache-log4j-1.2.9
    時間:2006-01-26
    Author:Kino
    ***************************************

    呵呵 快過年了。眼看身邊的朋友一個一個離開,踏上歸途,心里不免有些淡淡的憂傷。為了消磨時間,寫寫文章也和久違的大家聊聊。

    這里先祝愿各位朋友新春快樂。在狗年旺、旺、旺旺旺。

    切入正題吧。大名鼎鼎的Log4j我也理解得不深,這里采用假設(shè)的問答方式介紹吧。
    Q:Log4j是個什么東西?
    A:Log4j應(yīng)該叫做 Log for java吧,是ApacheGroup旗下的明星項目,已經(jīng)應(yīng)用在很多方面了。同類的還有針對c c++等的log4c log4XXX之類。請自己看鏈接:

    Q:Log4j到底是怎么被應(yīng)用得?
    A:這就要從結(jié)構(gòu)上說了,首先我們應(yīng)用的并不是Log4j而是Jakarta-Commons-logging,但是這只是一個interface包沒有具體的實現(xiàn)(其實是有的,叫做SampleLog弱但是快)。所以在大火的source里你只需要面向Logging編程而無須關(guān)心到底是如何生成的。因為Logging項目支持很多實現(xiàn)并不一定是Log4j。還有JDK的Log也行啊。那我們要做的就是  配置 Log4j到系統(tǒng)就好了。

    Q:Log4j到底要配置什么東西,才能被系統(tǒng)識別?
    A:2個:Jar包  和  log4j配置文件。 Jar我就不說了。現(xiàn)在來說Log4j配置文件。這個文件可以隨意命名,默認(rèn)的文件是 log4j.properties 。放在你的src根目錄下就好。比如 你的source的catagory是com.yourcompany.xx那么放在和com并列的目錄下就好。

    Q:如果我不想用默認(rèn)的log4j.properties 我應(yīng)該怎么定義,怎么做?
    A:那就使用下邊的命令定義:
    System.setProperty("");  -_-! 具體內(nèi)容想不起來了,留言中補充吧。
    如果你是Struts工程或者Web工程,需要做一個sevlet把這段代碼載入。重載ActionServlet的init方法就好。

    Q:這個文件如何定義?
    A:如下例。(具體的可以查閱JavaDoc)
    ### direct log messages to console ###
    log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
    log4j.appender.CONSOLE.Target=System.out
    log4j.appender.CONSOLE.Threshold=INFO
    log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
    log4j.appender.CONSOLE.layout.ConversionPattern=%d{yyyy MMM dd HH:mm:ss:SSS} %-5p %m (%F:%L) [%t]%n

    ### direct messages to file gm_web.log ###
    log4j.appender.FILE=org.apache.log4j.RollingFileAppender
    log4j.appender.FILE.File=../logs/gm_web.log
    log4j.appender.FILE.MaxFileSize=1000KB
    log4j.appender.FILE.MaxBackupIndex=5
    log4j.appender.FILE.Append=true
    log4j.appender.FILE.Threshold=DEBUG
    log4j.appender.FILE.layout=org.apache.log4j.PatternLayout
    log4j.appender.FILE.layout.ConversionPattern=%d{yyyy MMM dd HH:mm:ss:SSS} %-5p %m (%F:%L) [%t]%n

    # Set root category priority to INFO and its only appender to CONSOLE.
    log4j.rootCategory=ERROR, CONSOLE, FILE
    log4j.logger.com.mycompany.ui=DEBUG, CONSOLE, FILE

    XML格式的定義,我就不說了,資料滿天都是。

    Q:聽說Log記錄有繼承關(guān)系,那么多Log,效率太低了吧
    A:有繼承關(guān)系,對應(yīng)的當(dāng)然就有打破繼承的定義,比如上例。
    log4j.rootCategory=ERROR, CONSOLE, FILE
    log4j.logger.com.mycompany.ui=DEBUG, CONSOLE, FILE
    com.mycompany.ui就繼承了rootCategory的Log記錄級別。但是如果像破除使用additivity
    log4j.additivity.com.mycompany.ui=false
    就KO了。

    Q:log4j.appender.FILE.File=yourlogfile.log 到底給我把Log放哪去了?能改不?
    A:如果是Tomcat那就放到bin下邊了。能改啊,bin就是基準(zhǔn)目錄,寫相對路徑就好咯。如上例。

    Q:Log4j中ConversionPattern到底都是什么意思,都怎么用???
    A: 如下解釋

    1. [c]/[C] -- 返回用來決定 Class名稱 以及 package路徑(路徑也可是部分的)
    2. [d] -- 返回時間 可能有各種格式format的時間。
    3. [F] -- 返回發(fā)出記載Log請求的文件得名字。
    4. [l] -- 返回生成log事件的調(diào)用者的Location Information。
    5. [L] -- 返回發(fā)出記載Log請求的行數(shù)。
    6. [m] -- 返回用戶自己寫的 message。
    7. [M] -- 返回發(fā)出記載Log請求的方法名稱。
    8. [n] -- 返回 換行。(依據(jù)平臺不同而不同)
    9. [p] -- 返回Log事件的優(yōu)先級。
    10. [r] -- 返回從Application開始到這條Log事件產(chǎn)生之間的時間間隔。(毫秒)
    11. [t] -- 返回生成Log事件的線程名稱。
    12. [x] -- 返回與生成Log事件的線程相關(guān)的NDC(內(nèi)嵌特征內(nèi)容)
    13. [X] -- 返回與生成Log事件的線程相關(guān)的MDC(映射特征內(nèi)容),要KeyofMDC
    14. 分隔符 -- 空格,可能在left 也可能在 right


    Q:ConversionPattern參數(shù)能去哪里參考呢?
    A:JavaDoc  PatternLayout 類。

    http://logging.apache.org/log4j/docs/api-unstable/index.html

    Q:Log4j會不會太慢啊,性能如何?
    A:這個問題不好回答。反正記錄一條Log大約的時間是20ms 到 400ms吧,根據(jù)你ConversionPattern需要記錄的格式內(nèi)容,以及package catagory的繼承關(guān)系來決定。那么每個pattern到底哪個快哪個慢,哪個超級慢,請看http://logging.apache.org/log4j/docs/api-unstable/index.html??倸w一句話,只要讓log4j給你trace調(diào)用關(guān)系,反射class 就別指望能快,格誰都一樣,是吧。


    Q:下班了沒,啰嗦這么多,有問題再問你吧,留下聯(lián)系信息
    A:剛下班,還吃了朋友的蛋糕(他本人正在飛機上,哈哈,吃了個獨食),回家咯。討論問題的請留言或者kinoviti@gmail.com   QQ:23493713


    評論

    # re: Log4j 簡單配置  回復(fù)  更多評論   

    2006-01-26 22:54 by -=Kino=-
    >>>System.setProperty(""); -_-! 具體內(nèi)容想不起來了,留言中補充吧。
    具體為
    表明使用了Log4J:
    System.setProperty("org.apache.commons.logging.Log",
    "org.apache.commons.logging.impl.Log4JLogger");
    設(shè)定特殊文件的地方:
    URL log4jresource = this.getClass().getResource("log4j.properties");
    PropertyConfigurator.configure(log4jresource);
    可以把log4j.properties替換為log4j.xml

    # re: Log4j 簡單配置  回復(fù)  更多評論   

    2006-11-09 10:51 by 千千
    牛人,我的榜樣,

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


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 亚洲线精品一区二区三区影音先锋| 成年女人色毛片免费看| 亚洲精品国精品久久99热 | 国产亚洲精品免费视频播放| 在线视频亚洲一区| 日韩在线天堂免费观看| WWW亚洲色大成网络.COM | 亚洲乱色熟女一区二区三区丝袜| 亚洲天堂免费在线视频| 国产亚洲精品影视在线产品 | 亚洲一区在线免费观看| 国产美女在线精品免费观看| 亚洲伊人精品综合在合线| 18禁超污无遮挡无码免费网站国产 | 在线观看免费大黄网站| 亚洲av乱码一区二区三区按摩| 特级淫片国产免费高清视频| 国产亚洲蜜芽精品久久| 国产亚洲成人在线播放va| 久久综合九色综合97免费下载| 亚洲的天堂av无码| 香蕉高清免费永久在线视频| 国产午夜亚洲精品不卡免下载| 亚洲人成网站18禁止一区| 久久精品成人免费看| 亚洲av一本岛在线播放| 全部免费国产潢色一级| 13小箩利洗澡无码视频网站免费| 日韩精品一区二区亚洲AV观看| 成年女人男人免费视频播放 | 亚洲人JIZZ日本人| 成人免费福利视频| 边摸边吃奶边做爽免费视频网站| 狠狠色婷婷狠狠狠亚洲综合 | 亚洲AV无码乱码国产麻豆| 综合在线免费视频| 一级一级一级毛片免费毛片| 中文字幕第一页亚洲| 免费在线观看的网站| 国产A∨免费精品视频| 亚洲乱码中文字幕小综合|