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) {
}
}
}
}
}
}
四、运行结果