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

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

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

    空間站

    北極心空

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

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

    1.基本使用


    1.1服務器


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

      服務器端的配置文件可以用這個(引自利用Log4j 創建日志服務器 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監視終端,A3限制大小的文件,A4是日期滾動文件。
     單A3,A4是講所有客戶端的日志都存放到了同一個日志文件中,我覺的這種方法并不好。

    1.2客戶端


    客戶端的配置文件是這樣的:
     log4j.rootCategory=,SOCKET
     log4j.addivity.org.apache=true  
    #應用于socket 
    log4j.appender.SOCKET=org.apache.log4j.net.SocketAppender 
    log4j.appender.SOCKET.RemoteHost=localhost   #服務器的IP地址
    log4j.appender.SOCKET.Port=1978              #服務器的監聽端口
    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

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

    2.稍微高級點的使用


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

    2.1服務器

     
      服務器的配置文件不用怎么改動,如果你不需要在同一個文件中存放所有日志,可以把配置文件第一行的A3去掉。
      但服務器端有個更大的麻煩:代碼有問題!問題夠大了吧,不知道算不算是個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
    (改這段是因為我用的時候出錯!看不出來改不改有什么區別)
    改第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;
    編譯文件!

    現在為每個配置客戶端編配置文件,把配置文件放到【客戶端配置文件目錄】中:
    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啦!
    啟動服務器,啟動客戶端,現在服務器的日志放到了server.log中,有配置文件的客戶端的日志會放到相應的日志文件中,沒有配置文件的客戶端的日志依然放在server.log中!

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

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

    Feedback

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


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


    網站導航:
     
    主站蜘蛛池模板: 五级黄18以上免费看| 亚洲综合伊人制服丝袜美腿| 国产精品亚洲а∨天堂2021 | 亚洲国产免费综合| 亚洲av无码专区在线观看亚| 成年美女黄网站18禁免费| 亚洲一区中文字幕在线观看| 国内精品免费麻豆网站91麻豆| 亚洲精品在线免费看| 免费H网站在线观看的| 中文字幕精品三区无码亚洲| 最近高清国语中文在线观看免费| ass亚洲**毛茸茸pics| 国内自产少妇自拍区免费| 亚洲av永久无码精品秋霞电影秋| 国产精品免费_区二区三区观看| 相泽南亚洲一区二区在线播放| 亚洲国产精品第一区二区三区| 一本久久A久久免费精品不卡| 亚洲欧洲自拍拍偷午夜色无码| 久久久久久毛片免费播放| 日韩亚洲国产高清免费视频| 日本无吗免费一二区| 一级一看免费完整版毛片| 亚洲av永久无码精品漫画| 免费观看国产网址你懂的| 亚洲国产欧美国产综合一区| 亚洲AV成人潮喷综合网| 久久久久成人精品免费播放动漫| 亚洲成人免费网站| 国产特级淫片免费看| 天堂在线免费观看| 亚洲已满18点击进入在线观看| 亚洲XX00视频| 中文字幕免费在线看线人 | 91精品手机国产免费| 亚洲精品无码高潮喷水A片软| 亚洲高清国产拍精品青青草原 | 亚洲乱亚洲乱妇24p| 久久久久国产亚洲AV麻豆 | 日韩精品免费一级视频|