<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)站導航:
     
    主站蜘蛛池模板: 免费的全黄一级录像带| 成人午夜影视全部免费看| 无码少妇精品一区二区免费动态| 亚洲国产精品尤物yw在线 | 国产成人无码a区在线观看视频免费| 亚洲午夜精品久久久久久app| 18勿入网站免费永久| 亚洲乱码一区av春药高潮| 四虎永久在线精品免费观看视频| 91亚洲视频在线观看| 国产在线观看免费观看不卡| 亚洲熟妇无码AV不卡在线播放| 成年私人影院免费视频网站| 亚洲精品无码av片| 日韩亚洲人成在线| 成人免费福利电影| 色妞www精品视频免费看| 免费视频爱爱太爽了| 亚洲国产成AV人天堂无码| 成人性生免费视频| 国产精品亚洲а∨无码播放麻豆| 免费欧洲毛片A级视频无风险| www免费插插视频| 亚洲第一福利网站| 成人一级免费视频| 亚洲人成图片小说网站| 国产精品亚洲一区二区在线观看| 国产精品亚洲高清一区二区| 亚洲乱码日产精品一二三| 又爽又高潮的BB视频免费看| 国产一区二区免费| 亚洲午夜在线播放| 亚洲M码 欧洲S码SSS222| 久久精品免费电影| 亚洲永久网址在线观看| 亚洲伊人久久综合影院| 一级毛片在线免费看| 亚洲av色香蕉一区二区三区| 亚洲国产精品无码久久一区二区| 欧美a级成人网站免费| 亚洲国产精品成人久久久|