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

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

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

    beauty_beast

    上善若水 厚德載物

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

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

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

    protected  void append(LoggingEvent event);

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

    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
                  該類相對簡單,一個線程類
         主要功能:
                         負責(zé)接收客戶端對應(yīng)輸出對象,根據(jù)對應(yīng)的配置,輸出相關(guān)日志。

          可以看出是通過對象進行傳輸?shù)模绻谌讲皇遣捎胘ava語言的,實際解決時只需改寫SocketAppender的append方法,輸出日志內(nèi)容就可。對方實現(xiàn)SocketServer功能就可(編程語言基本都支持該功能)。

           遺憾的是在weblogic 一般server域中我沒有找到可以改變?nèi)罩据敵龅牡胤剑ㄉ洗慰吹絯eblogic9.0中有日志服務(wù),不知道能不能改變),所以實際差距還是比較大的,關(guān)于性能問題,因為是重要的日志(warning、error、fetal)才輸出,采用socket方式問題應(yīng)該不大。

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



       
                                               

    Feedback

    # re: 基于log4j實現(xiàn)統(tǒng)一日志管理  回復(fù)  更多評論   

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

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

    大蝦給詳細說明一下呢
    主站蜘蛛池模板: 亚洲AV无码1区2区久久| 又黄又爽的视频免费看| 亚洲成a人片在线观看无码| jizz免费一区二区三区| 亚洲高清无码专区视频| 成在线人直播免费视频| 亚洲人成影院在线观看| 国产国产人免费人成成免视频| 免费夜色污私人影院在线观看| 一级做a爰片久久毛片免费陪 | 亚洲精品视频观看| 最近中文字幕高清免费中文字幕mv| 亚洲视频.com| 欧洲一级毛片免费| 亚洲伊人久久大香线蕉AV| 在线免费观看一级片| 无码精品一区二区三区免费视频| 亚洲色欲一区二区三区在线观看| 在线涩涩免费观看国产精品| 91亚洲导航深夜福利| 久久精品免费一区二区喷潮| 亚洲AV日韩AV永久无码色欲| 婷婷亚洲天堂影院| 免费日本一区二区| 亚洲一区在线视频| 日本免费v片一二三区| rh男男车车的车车免费网站| 亚洲AV日韩AV永久无码下载| 日韩在线免费视频| 无套内射无矿码免费看黄| 亚洲开心婷婷中文字幕| 99久久99这里只有免费费精品| 亚洲男人的天堂网站| 久久影视国产亚洲| 国产在线jyzzjyzz免费麻豆| 亚洲av成人一区二区三区观看在线| 久久99亚洲综合精品首页| 蜜桃AV无码免费看永久| 精品女同一区二区三区免费播放| 亚洲精品V欧洲精品V日韩精品| 成人免费观看一区二区|