posts - 310, comments - 6939, trackbacks - 0, articles - 3
            BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

          Java socket編程中的日志處理

          Posted on 2007-10-30 13:32 詩特林 閱讀(2687) 評論(0)  編輯  收藏 所屬分類: Socket
                                                       Java socket編程中的日志處理
           

          Logger 對象用來記錄特定系統(tǒng)或應(yīng)用程序組件的日志消息。一般使用圓點分隔的層次命名空間來命名 Logger。Logger 名稱可以是任意的字符串,但是它們一般應(yīng)該基于被記錄組件的包名或類名,如 java.net javax.swing。此外,可以創(chuàng)建匿名 Logger,其名稱未存儲在 Logger 命名空間中。

          下面演示在Socket通信中使用Logging來進行日志消息.

          一、修改系統(tǒng)日志配置文件

          <Java_HOME>\jre1.5.0_09\lib\logging.properties文件,有一個ConsoleHandler:

          handlers= java.util.logging.ConsoleHandler

          當(dāng)然也有一個默認的FileHandler:

          java.util.logging.FileHandler.pattern = %h/java%u.log

          java.util.logging.FileHandler.limit = 50000

          java.util.logging.FileHandler.count = 1

          java.util.logging.FileHandler.formatter = java.util.logging.XMLFormatter

          handlers= java.util.logging.ConsoleHandler變成如下內(nèi)容

          handlers= java.util.logging.FileHandler, java.util.logging.ConsoleHandler

          二、客戶端程序

          LogTest.java:

          package sterning.tcpsocket;

          import java.io.*;
          import java.util.logging.*;

          public class LogTest {
            
          private static Logger logger =
                Logger.getAnonymousLogger();
            
          public static void main(String argv[]) throws IOException {
              Handler handler 
          = new SocketHandler("localhost"8099);
              logger.addHandler(handler);
              logger.log(Level.SEVERE, 
          "Hello, World");
              logger.log(Level.INFO, 
          "歡迎您的到來");
            }

          }



           

          三、服務(wù)端程序

          LogServer.java:

          package sterning.tcpsocket;
          import javax.net.ssl.*;
          import javax.net.*;
          import java.io.*;
          import java.net.*;

          public class LogServer {
            
          private static final int PORT_NUM = 8099;
            
          public static void main(String args[]) {
              ServerSocketFactory serverSocketFactory 
          =
                ServerSocketFactory.getDefault();
              ServerSocket serverSocket 
          = null;
              
          try {
                serverSocket 
          =
                  serverSocketFactory.createServerSocket(PORT_NUM);
              }
           catch (IOException ignored) {
                System.err.println(
          "無法創(chuàng)建服務(wù)");
                System.exit(
          -1);
              }

              System.out.printf(
          "LogServer 運行端口: %s%n", PORT_NUM);
              
          while (true{
                Socket socket 
          = null;
                
          try {
                  socket 
          = serverSocket.accept();
                  InputStream is 
          = socket.getInputStream();
                  BufferedReader br 
          = new BufferedReader(
                    
          new InputStreamReader(is, "GBK"));
                  String line 
          = null;
                  
          while ((line = br.readLine()) != null{
                    System.out.println(line);
                  }

                }
           catch (IOException exception) {
                  
          // 處理下在個請求.
                }
           finally {
                  
          if (socket != null{
                    
          try {
                      socket.close();
                    }
           catch (IOException ignored) {
                    }

                  }

                }

              }

            }

          }



          四、運行結(jié)果


          主站蜘蛛池模板: 扎囊县| 栾城县| 确山县| 杨浦区| 大姚县| 冷水江市| 甘肃省| 苍南县| 峨眉山市| 阿鲁科尔沁旗| 嘉荫县| 娄底市| 通海县| 噶尔县| 白银市| 和龙市| 龙井市| 库伦旗| 牙克石市| 邹城市| 洞口县| 沈阳市| 阳泉市| 红河县| 固镇县| 苏州市| 景洪市| 缙云县| 水富县| 江源县| 南溪县| 南投县| 梁平县| 房山区| 福鼎市| 金阳县| 白玉县| 台东县| 邯郸县| 长兴县| 靖安县|