设为首页收藏本站

LUPA开源社区

 找回密码
 注册
文章 帖子 博客
LUPA开源社区 首页 业界资讯 开源资讯 查看内容

Java开源日志框架大比拼

2014-1-10 10:42| 发布者: joejoe0332| 查看: 2506| 评论: 0|原作者: 廖煜嵘|来自: InfoQ

摘要: 由 于日志通常涉及到IO读写磁盘(或者是阻塞或者是异步),这都要耗费时间。当在大型系统中有大量数据的时候,日志所耗费的时间就会显现。在本文中,将深入 探讨目前Java开源世界中领先的五个日志框架,在各个方面进 ...
  应用系统中,日志是不可缺少的重要组成部分,所有的应用的出错信息等都应该能在日志文件中查找到,有的应用系统日志可能数量很小,有的庞大的应用系统的日志是相当庞大,同时日志文件必须是方便用户定制和查找的,要具备很高的性能,否则会影响应用系统的性能。


  由 于日志通常涉及到IO读写磁盘(或者是阻塞或者是异步),这都要耗费时间。当在大型系统中有大量数据的时候,日志所耗费的时间就会显现。在本文中,将深入 探讨目前Java开源世界中领先的五个日志框架,在各个方面进行比较,要指出的是,本文并不是探究哪个日志框架是最优秀的,而只是列出各自的优缺点。



  我们选取的五个日志框架分别为:


1. Log4J

2. Log4J2

3. Logback

4. SLF4J Simple Logging (SLF4J SL)

5. Java Util Logging (JUL)


  我们想对比下这些日志框架对于基本的日志记录活动的性能如何,每一个日志操作包括时间戳和其上下文的进程ID。我们进行如下四个方面的测评:


1.记录字符串常量

2. Logging the .toString() value of a POJO 对POJO使用.toString()方法

3. Logging a throwable object 记录throwable对象4 只测试.toString()方法


  我们决定为每种场景进行五次的评测,通过衡量完成日纸记录的操作次数,以决定哪一个有最佳的成绩。在每次测试中让日志引擎在一分钟内使用10个线程去执行,并且剔除最大的2次偏差,将余下的三次进行平均。


  在每一个单独的日志记录操作中,我们让CPU在日志记录的时候都执行一些操作(如检查是否一个随机数是否素数)。这些评测的日志引擎都使用各自的默认配置通过SLF4J来运行。评测是在Amazon m1.large EC2实例上进行的。


  在 Log4j2的刚开始的测试中,我们设置了%C的布局参数(参考:http://logging.apache.org/log4j/2.x /manual/layouts.html),这增加了其开销,在@RemkoPopma的建议下,我们更新了设置为%c(日志的名称)以符合其他的配 置,这给Log4j2一个性能相当大的提升,在下面两个图中,值得注意的是记录上下文的性能开销。


  使用%C的设置:



  使用%C的设置:


 


  完整的测试结果集参考这个链接:https://docs.google.com/spreadsheet/ccc?key=0Alceaf46X4GPdHBoLTdYQ29nRDh6V1dRY00zT1FwWWc&usp=sharing



酷毙

雷人

鲜花

鸡蛋

漂亮
  • 快毕业了,没工作经验,
    找份工作好难啊?
    赶紧去人才芯片公司磨练吧!!

最新评论

关于LUPA|人才芯片工程|人才招聘|LUPA认证|LUPA教育|LUPA开源社区 ( 浙B2-20090187 浙公网安备 33010602006705号   

返回顶部