Java socket编程中的日志处理

Logger 对象用来记录特定系统或应用程序组件的日志消息。一般使用圆点分隔的层次命名空间来命名 Logger。Logger 名称可以是任意的字符串,但是它们一般应该基于被记录组件的包名或类名,如 java.net 或 javax.swing。此外,可以创建“匿名”的 Logger,其名称未存储在 Logger 命名空间中。

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

一、修改系统日志配置文件

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

handlers= java.util.logging.ConsoleHandler

当然也有一个默认的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变成如下内容

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, "欢迎您的到来");
  }
}

 

三、服务端程序

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("无法创建服务");
      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) {
          }
        }
      }
    }
  }
}


四、运行结果

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值