<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=- 閱讀(2823) 評論(2)  編輯  收藏 所屬分類: 讀書筆記

    Log4j 簡單配置
    ***************************************
    關鍵字:Log4j
    難易度:簡單

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

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

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

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

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

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

    Q:如果我不想用默認的log4j.properties 我應該怎么定義,怎么做?
    A:那就使用下邊的命令定義:
    System.setProperty("");  -_-! 具體內容想不起來了,留言中補充吧。
    如果你是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記錄有繼承關系,那么多Log,效率太低了吧
    A:有繼承關系,對應的當然就有打破繼承的定義,比如上例。
    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就是基準目錄,寫相對路徑就好咯。如上例。

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

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


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

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

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


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


    評論

    # re: Log4j 簡單配置  回復  更多評論   

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

    # re: Log4j 簡單配置  回復  更多評論   

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

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


    網站導航:
     
    主站蜘蛛池模板: 国内大片在线免费看| 嘿嘿嘿视频免费网站在线观看| 日韩视频在线免费| 亚洲视频无码高清在线| 人妻视频一区二区三区免费| 亚洲沟沟美女亚洲沟沟| 成人免费视频69| 亚洲一区免费视频| 成人毛片18女人毛片免费视频未 | 亚洲欧美日韩国产精品一区| 在线免费观看视频你懂的| 国产成人亚洲综合a∨| 一区国严二区亚洲三区| 亚洲一区二区三区免费| 久久99国产亚洲高清观看首页 | 国产精品亚洲色图| 内射无码专区久久亚洲| 两个人的视频www免费| 色婷婷六月亚洲婷婷丁香| 国产人成免费视频网站| 亚洲精品乱码久久久久蜜桃| 国产免费牲交视频| 日韩免费高清播放器| 亚洲成a人片在线观看中文!!!| 久久久久久国产精品免费免费| 色偷偷亚洲第一综合| 国产国拍精品亚洲AV片| 100部毛片免费全部播放完整| 亚洲国产精品一区二区久| 免费人成年激情视频在线观看| 91在线免费观看| 亚洲剧情在线观看| 亚洲国产精品无码久久青草| 久久免费国产精品一区二区| 亚洲一区二区三区亚瑟| 亚洲一区视频在线播放| 91频在线观看免费大全| 一级特黄录像免费播放中文版| 亚洲美女自拍视频| 亚洲精品乱码久久久久久蜜桃| 中文字幕免费在线看线人|