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

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

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

    beauty_beast

    上善若水 厚德載物

    基于log4j實現統一日志管理

    Posted on 2006-03-16 16:49 柳隨風 閱讀(4984) 評論(1)  編輯  收藏 所屬分類: 開源框架

    背景:
           一般操作系統級的告警有相關的軟件,但我們應用級日志往往無法統一監控、分析。因為最近的項目是比較大的一個平臺,有七、八個子系統,weblogic域也有三、四個。如果用戶自身能夠實時監控到應用級致命異常日志 如OutOfMemory,線程掛死、應用接口無法鏈接等等。那么我們監控維護人員工作就大大簡化,不然要查看所有域的日志信息,只需集中看一處,系統故障也能夠更快的解決,恢復正常。
           用戶的需求是要求我們將日志輸出到一個第三方廠家的日志Server。

    設想:
            weblogic platform域的日志輸出是可配置的,在$bea/weblogic/common/lib/workshopLogCfg.xml, 原先的一個項目所有的日志輸出均在此文件中配置。其他中間件本人很少使用,相信也有類似的功能,log4j日志框架支持統一日志管理功能,簡單實現原理(啟動一個SocketServer,處理各個客戶端機器連接的Socket輸入,
    而每個應用打印日志使用Socket方式將日志內容輸出到SocketServer端)。如果能將重要的的中間件異常日志以及應用異常日志到統一日志服務器,實時分析,這樣就方便日常監控,有點類似于設備告警的功能,如果再開發出相關日志分析軟件,個人覺得會是平臺級產品的一個亮點,正如《少林足球》說的有點搞頭。

    實踐:
        實踐證明現實和理想總歸有一定的差距,呵呵。下面描述驗證、學習心得:
        首先描述log4j是如何實現統一日志管理該功能的。
        核心類:
        一、org.apache.log4j.net.SocketServer 
        主要功能:
                          1、啟動SocketServer
                          2、接受Socket請求
                          3、初始化對應Socket的日志輸出配置,如沒有,就采用通用配置
                          4、另啟線程處理客戶端Socket和服務端交互
        一個比較標準的多線程處理實現。
         啟動Server需要有三個運行參數:端口號、log4j配置文件、客戶端日志在Server端輸出配置文件目錄
         運行命令如下:
                         java -classpath ../lib/log4j-1.2.8.jar;.; test.logserver.FixSocketServer   8088   server.properties  d:/temp
         說明:
                  a、客戶端日志在Server端輸出配置文件命名規則 $ip.lcf ,    如 10.21.11.10.lcf  
                            該類在解析該配置文件的代碼中 應該存在個bug(版本1.2.9)
                                               代碼176 行   String key = s.substring(0,i);改為:   String key = s.substring(i+1);
                  b、配置文件內容和一般log4j配置內容雷同,categories、appenders、layouts 
         二、org.apache.log4j.net.SocketAppender
                 該類繼承于AppenderSkeleton,如果我們需要自定義Appender,可以繼承AppenderSkeleton類,實現方法:

    protected  void append(LoggingEvent event);

        主要功能: 
                         1、連接到SocketServer,并創建一個到SocketServer的對象輸出實例
                         2、如果連接失敗,會啟動一個守護線程,每隔三十秒鐘重新連接
                         3、日志輸出時,將日志事件對象輸出到SocketServer
         相對應的日志配置:
            

    log4j.appender.mysocket=test.logserver.SocketAppender 
    log4j.appender.mysocket.RemoteHost
    =10.243.17.85 
    log4j.appender.mysocket.Port
    =8088 
    log4j.appender.mysocket.LocationInfo
    =true 
    log4j.appender.mysocket.layout
    =org.apache.log4j.PatternLayout 
    log4j.appender.myConsole.layout.ConversionPattern
    =%5p [%t] (%F:%L) - %m%n


          三、org.apache.log4j.net.SocketNode
                  該類相對簡單,一個線程類
         主要功能:
                         負責接收客戶端對應輸出對象,根據對應的配置,輸出相關日志。

          可以看出是通過對象進行傳輸的,如果第三方不是采用java語言的,實際解決時只需改寫SocketAppender的append方法,輸出日志內容就可。對方實現SocketServer功能就可(編程語言基本都支持該功能)。

           遺憾的是在weblogic 一般server域中我沒有找到可以改變日志輸出的地方(上次看到weblogic9.0中有日志服務,不知道能不能改變),所以實際差距還是比較大的,關于性能問題,因為是重要的日志(warning、error、fetal)才輸出,采用socket方式問題應該不大。

    篇外話:               
               查看代碼中無意中發現log4j框架一部分源碼都是一些人捐獻的。雖然代碼不復雜,但感覺為自己喜歡的框架很熱心,希望它變的越來越好,真的希望我們國內也能有一些優秀的開源項目,并且大家都去支持它,發展它。
               實際我在項目中使用log4j使用的都是一些基本功能,對它的設計、結構不是很清楚,誰有相關學習文檔,請給我一份,不甚感激(使用手冊已有)。



       
                                               

    Feedback

    # re: 基于log4j實現統一日志管理  回復  更多評論   

    2013-01-20 20:31 by BadMan03
    請問 log4j SocketAppender 連服務端是短連接還是長連接?如果是長連接,誰在維護這個連接呢?

    比如多線程業務處理時,業務線程里用log4j打日志,打完就釋放了,那log4j SocketAppender 的連接還在?如果不在的話,豈不是每筆業務調用都要連一下服務端,會導致兩個問題:
    1)頻繁的連接導致業務性能下降,尤其是并發量大的系統,不可接受
    2)會導致socket耗盡

    大蝦給詳細說明一下呢
    主站蜘蛛池模板: 免费成人午夜视频| 国产人成免费视频| 亚洲午夜未满十八勿入| 精品一区二区三区高清免费观看 | 久久亚洲精品无码AV红樱桃| 无码专区永久免费AV网站| 亚洲国产精品精华液| 国产亚洲精品精华液| 亚洲国产综合人成综合网站00| 美女无遮挡拍拍拍免费视频| 狠狠亚洲狠狠欧洲2019| 99视频在线免费观看| 亚洲国产香蕉碰碰人人| 亚洲一区免费观看| 亚洲a级片在线观看| 成人免费午间影院在线观看| 亚洲日韩av无码中文| 免费精品国产自产拍观看| 国产成人自产拍免费视频| 久久精品国产亚洲AV果冻传媒 | 精品一区二区三区免费视频| 亚洲人成网站在线播放vr| 四虎影视在线影院在线观看免费视频 | 亚洲精品无码av片| 又大又黄又粗又爽的免费视频| eeuss草民免费| 亚洲精品视频专区| 国产精品免费看久久久久| 久久99久久成人免费播放| 亚洲综合视频在线观看| 四虎成人免费影院网址| 国产免费人成视频在线播放播 | 在线观看永久免费| 精品亚洲国产成人av| 亚洲精品国偷自产在线| 久久WWW免费人成一看片| 国产精品亚洲精品爽爽| 亚洲欧洲免费视频| 又黄又爽无遮挡免费视频| 日韩精品无码专区免费播放| 亚洲Av永久无码精品黑人|