测试代码
可以使用一下代码测试SocketAppender和SocketNode:
1 @Test
2 public void testSocketAppender() throws Exception {
3SocketAppender appender = new SocketAppender(
4InetAddress.getLocalHost(), 8000);
5appender.setLocationInfo(true);
6appender.setApplication("AppenderTest");
7appender.activateOptions();
8configAppender(appender);
9
10Logger log = Logger.getLogger("levin.log4j.test.TestBasic");
11for(int i = 0;i < 100; i++) {
12Thread.sleep(10000);
13if(i % 2 == 0) {
14log.info("Normal test.");
15} else {
16log.info("Exception test", new Exception());
17}
18}
19 }
20
21 @Test
22 public void testSimpleSocketServer() throws Exception {
23ConsoleAppender appender = new ConsoleAppender(new TTCCLayout());
24appender.activateOptions();
25configAppender(appender);
26
27ServerSocket serverSocket = new ServerSocket(8000);
28while(true) {
29Socket socket = serverSocket.accept();
30new Thread(new SocketNode(socket,
31LogManager.getLoggerRepository()),
32"SimpleSocketServer-" + 8000).start();
33}
34 }
SocketHubAppender类
SocketHubAppender类似SocketAppender,它也将日志信息(序列化后的LoggingEvent实例)发送到指定的日志服务器,该日志服务器可以是SocketNode支持的服务器。不同的是,SocketAppender指定日志服务器的地址和端口号,而SocketHubAppender并不直接指定日志服务器的地址和端口号,它自己启动一个指定端口的服务器,由日志服务器注册到到该服务器,从而产生一个连接参数,SocketHubAppender根据这些参数发送日志信息到注册的日志服务器,因而SocketHubAppender支持同时发送相同的日志信息到多个日志服务器。
另外,SocketHubAppender还会缓存部分LoggingEvent实力,从而支持在新注册一个日志服务器时,它会先将那些缓存下来的LoggingEvent发送给新注册服务器,然后接受新的LoggingEvent日志打印请求。
具体实现以及注意事项参考SocketAppender。最好补充一点,SocketHubAppender可以和chainsaw一起使用,它好像使用了zeroconf协议,和SocketHubAppender以及SocketAppender中的ZeroConfSupport类相关,不怎么了解这个协议,也没有时间细看了。
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-29497-20.html
打死一些男人更靠谱
水军真可怕