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

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

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

    空間站

    北極心空

      BlogJava :: 首頁 :: 聯(lián)系 :: 聚合  :: 管理
      15 Posts :: 393 Stories :: 160 Comments :: 0 Trackbacks
    使用Log4j搭建一個日志服務(wù)器
    agamem 原創(chuàng)   更新:2005-11-22 14:31:17  版本: 1.0   

       最近項目要用到日志服務(wù)器,需要把所有服務(wù)器的日志統(tǒng)一存入一個日志文件服務(wù)器中,于是就想到了Log4j的SocketAppender。
       網(wǎng)上一通搜索,終于找到了相關(guān)的只言片語,內(nèi)容幾乎雷同,和examples\lf5\UsingSocketAppenders中提供的例子沒有什么區(qū)別!
       只好自己研究了!

    1.基本使用


    1.1服務(wù)器


       這個日志服務(wù)器的服務(wù)器端需要運行:
      log4j jar包中的org.apache.log4j.net.SocketServer 
      加參數(shù) 【本地監(jiān)聽端口】【配置文件】【客戶端配置文件目錄】
      第三個參數(shù)【配置文件目錄】其實指的是針對每個客戶端的配置文件,等會詳細講!現(xiàn)在用“.”就可以了.

      服務(wù)器端的配置文件可以用這個(引自利用Log4j 創(chuàng)建日志服務(wù)器 By ?の?):
     #文件名socketserver.properties
     #如果需要顯示日志界面,可以將本行啟用
     #log4j.rootCategory=, A1  
     log4j.rootLogger=DEBUG,A3
     log4j.category.org.apache.log4j.net=INFO

     log4j.appender.A1=org.apache.log4j.lf5.LF5Appender
     log4j.appender.A1.MaxNumberOfRecords=700

     log4j.appender.A4=org.apache.log4j.DailyRollingFileAppender
     log4j.appender.A4.file=server.log
     log4j.appender.A4.DatePattern='.'yyyyMMdd
     log4j.appender.A4.layout=org.apache.log4j.PatternLayout
     log4j.appender.A4.layout.ConversionPattern=\n\n[%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} method:%l%n%m%n

     log4j.appender.A3=org.apache.log4j.RollingFileAppender
     log4j.appender.A3.file=server2.log
     log4j.appender.A3.MaxFileSize=1024KB
     log4j.appender.A3.MaxBackupIndex=999
     log4j.appender.A3.layout=org.apache.log4j.PatternLayout
     log4j.appender.A3.layout.ConversionPattern=\n\n[%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} method:%l%n%m%n

     其中A1是啟動Lf5的log監(jiān)視終端,A3限制大小的文件,A4是日期滾動文件。
     單A3,A4是講所有客戶端的日志都存放到了同一個日志文件中,我覺的這種方法并不好。

    1.2客戶端


    客戶端的配置文件是這樣的:
     log4j.rootCategory=,SOCKET
     log4j.addivity.org.apache=true  
    #應(yīng)用于socket 
    log4j.appender.SOCKET=org.apache.log4j.net.SocketAppender 
    log4j.appender.SOCKET.RemoteHost=localhost   #服務(wù)器的IP地址
    log4j.appender.SOCKET.Port=1978              #服務(wù)器的監(jiān)聽端口
    log4j.appender.SOCKET.LocationInfo=true      #這個是什么我不知道
    log4j.appender.SOCKET.layout=org.apache.log4j.PatternLayout 
    log4j.appender.SOCKET.layout.ConversionPattern=[%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} method:%l%n%t%m%n


    #A2
    log4j.appender.A2=org.apache.log4j.DailyRollingFileAppender
    log4j.appender.A2.file=server.log
    log4j.appender.A2.DatePattern='.'yyyy-MM-dd
    log4j.appender.A2.layout=org.apache.log4j.PatternLayout
    log4j.appender.A2.layout.ConversionPattern=[%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} method:%l%n%m%n

    啟動服務(wù)器端,再運行客戶端就可以了!但所有的服務(wù)器端/客戶端的日志都放到了一個日志文件中!

    2.稍微高級點的使用


     下面講如何把各個客戶端和服務(wù)器端的日志分別放到不同的日志文件中.
     這個我在網(wǎng)上找了好久也沒有找到!

    2.1服務(wù)器

     
      服務(wù)器的配置文件不用怎么改動,如果你不需要在同一個文件中存放所有日志,可以把配置文件第一行的A3去掉。
      但服務(wù)器端有個更大的麻煩:代碼有問題!問題夠大了吧,不知道算不算是個bug(我用的是1.2.11版log4j)。
      改吧!
      打開log4j目錄下的src\java\org\apache\log4j\net\SocketServer.java
    在這段中改動(看下面代碼第12行)
    1. LoggerRepository configureHierarchy(InetAddress inetAddress) {
    2.     cat.info("Locating configuration file for "+inetAddress);
    3.     // We assume that the toSting method of InetAddress returns is in
    4.     // the format hostname/d1.d2.d3.d4 e.g. torino/192.168.1.1
    5.     String s = inetAddress.toString();
    6.     int i = s.indexOf("/");
    7.     if(i == -1) {
    8.       cat.warn("Could not parse the inetAddress ["+inetAddress+
    9.            "]. Using default hierarchy.");
    10.       return genericHierarchy();
    11.     } else {
    12.       //這個是什么意思,專門取"/"符號嗎?明顯是錯的!閉掉
    13. //    String key = s.substring(0, i);
    14.       //改為
    15.     String key = s.substring(i+1);
    16.       File configFile = new File(dir, key+CONFIG_FILE_EXT);
    17.       if(configFile.exists()) {
    18.     Hierarchy h = new Hierarchy(new RootLogger((Level) Priority.DEBUG));
    19.     hierarchyMap.put(inetAddress, h);
    20.     new PropertyConfigurator().doConfigure(configFile.getAbsolutePath(), h);
    21.     return h;
    22.       } else {
    23.     cat.warn("Could not find config file ["+configFile+"].");
    24.     return genericHierarchy();
    25.       }
    26.     }
    27.   }

    編譯文件!

    打開log4j目錄下的src\java\org\apache\log4j\net\SocketNode.java
    (改這段是因為我用的時候出錯!看不出來改不改有什么區(qū)別)
    改第54行
    1.       ois = new ObjectInputStream(
    2.                          new BufferedInputStream(socket.getInputStream()));
    3.    

    1.     InputStream is = socket.getInputStream();
    2.     if (is != null) {
    3.        ois = new ObjectInputStream(new BufferedInputStream(is));
    4.     }

    文件頭加 import java.io.InputStream;
    編譯文件!

    現(xiàn)在為每個配置客戶端編配置文件,把配置文件放到【客戶端配置文件目錄】中:
    log4j.rootCategory=,A4
    log4j.appender.A4=org.apache.log4j.DailyRollingFileAppender
    log4j.appender.A4.file=127.0.0.1.log   #為每個客戶端取不同的名字
    log4j.appender.A4.DatePattern='.'yyyyMMdd
    log4j.appender.A4.layout=org.apache.log4j.PatternLayout
    log4j.appender.A4.layout.ConversionPattern=\n\n[%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} method:%l%n%m%n

    保存文件名為[客戶端ip地址].lcf  如192.168.0.126.lcf

    2.2 客戶端


      客戶端不用改變,太幸運了!!

    ok啦!
    啟動服務(wù)器,啟動客戶端,現(xiàn)在服務(wù)器的日志放到了server.log中,有配置文件的客戶端的日志會放到相應(yīng)的日志文件中,沒有配置文件的客戶端的日志依然放在server.log中!

    SocketServer.java 和 SocketNode.java兩個文件可以單獨做一個工程,把他們的package去掉就行了!

    下面的工作弄弄lf5!!等我弄好了再發(fā)上來!
    bye-bye!
    posted on 2007-10-08 09:24 蘆葦 閱讀(2270) 評論(1)  編輯  收藏

    Feedback

    # re: 使用Log4j搭建一個日志服務(wù)器 2013-05-28 15:38 hsyan
    請教一下如何編譯?  回復  更多評論
      


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


    網(wǎng)站導航:
     
    主站蜘蛛池模板: 久久九九亚洲精品| 亚洲6080yy久久无码产自国产| 亚洲香蕉免费有线视频| 中文日韩亚洲欧美制服| 在线观看亚洲天天一三视| 999久久久免费精品播放| 亚洲精品无码专区在线| 国产亚洲人成无码网在线观看| 1a级毛片免费观看| 免费播放国产性色生活片| 4444亚洲国产成人精品| 亚洲精品动漫人成3d在线| 亚洲视频免费在线播放| 亚州**色毛片免费观看| 亚洲免费中文字幕| 国产亚洲综合久久系列| 国产成人精品免费视频软件| 无码人妻精品中文字幕免费 | 污污污视频在线免费观看| 亚洲av午夜福利精品一区| 国产精品久久久久影院免费| 99热在线免费播放| 一区二区在线视频免费观看| 日本亚洲精品色婷婷在线影院| 国产精品亚洲片在线| 国产成人免费片在线观看| 中文字幕在线免费| 两个人日本免费完整版在线观看1| 亚洲欧美日本韩国| 亚洲精品午夜在线观看| 亚洲精品亚洲人成人网| 又黄又爽一线毛片免费观看| 西西大胆无码视频免费| 91禁漫免费进入| 青青操免费在线视频| 日本一区二区三区在线视频观看免费| 亚洲一级免费毛片| 亚洲综合色丁香麻豆| 亚洲AV第一页国产精品| 亚洲色精品aⅴ一区区三区| 亚洲乱码国产一区网址|