b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

log4j appender自定义_log4j routingappender_fileappender log4j(40)

电脑杂谈  发布时间:2017-01-30 04:04:43  来源:网络整理

最后,使用SocketAppender时,在应用程序退出时,最好显示的调用LoggerManager.shutdown()方法,不然如果是通过垃圾回收器来隐式的关闭(finalize()方法)SocketAppender,在Windows平台中可能会存在TCP管道中未传输的数据丢失的情况。另外,在网络连接不可用时,SocketAppender可能会阻塞应用程序,当网络可用,但是远程日志服务器不可用时,相应的日志会被丢失。如果日志传输给远程日志服务器的速度要慢于日志产生速度,此时会影响应用程序性能。这些问题在下一小节的SocketHubAppender中同样存在。

测试代码

可以使用一下代码测试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支持同时发送相同的日志信息到多个日志服务器。


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-29497-40.html

相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    热点图片
    拼命载入中...