关闭 x
IT技术网
    技 采 号
    ITJS.cn - 技术改变世界
    • 实用工具
    • 菜鸟教程
    IT采购网 中国存储网 科技号 CIO智库

    IT技术网

    IT采购网
    • 首页
    • 行业资讯
    • 系统运维
      • 操作系统
        • Windows
        • Linux
        • Mac OS
      • 数据库
        • MySQL
        • Oracle
        • SQL Server
      • 网站建设
    • 人工智能
    • 半导体芯片
    • 笔记本电脑
    • 智能手机
    • 智能汽车
    • 编程语言
    IT技术网 - ITJS.CN
    首页 » JAVA »5款Java开源日志框架大比拼

    5款Java开源日志框架大比拼

    2014-02-15 00:00:00 出处:ITJS
    分享

    应用系统中,日志是不可缺少的重要组成部分,所有的应用的出错信息等都应该能在日志文件中查找到,有的应用系统日志可能数量很小,有的庞大的应用系统的日志是相当庞大,同时日志文件必须是方便用户定制和查找的,要具备很高的性能,否则会影响应用系统的性能。

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

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

    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

    下面对基于4个场景的测试结果进行具体分析:

    一 字符串常量

    在 这轮比拼中,需要日志引擎使用线程和时间戳上下文去记录字符串常量。Log4j是冠军,比JUL能多写270%的日志行,比logback多12.5%, 比SLF4J SL多52%。有趣的是在我们改变log4j2的配置前,它写的行数能是比改变后的1/4左右,在更改配置后,性能排在第三位,只比logback记录的 行数少30%。

    二.toString()

    在 这轮比拼中记录的是POJO(使用其.toString方法),同样使用的是线程和时间戳。结果中,对于Log4j2来说,和第一回合差不多,但相比 SLF4J SL有25%的性能提升。Log4j和Logback是并驾齐驱的,位居第三,其吞吐量是SLF4J SL的88%。

    三.Throwable

    在这轮比拼中,日志引擎记录异常的对象和相关的描述信息。其中Log4j2是位居首位,其性能比SLF4J SL高3倍,SLF4J SL位于第五位。

    而Log4j和Logback也是只能排在此轮的冠军之后,记录的行数只大概有冠军的一半,而第二位的反而是JUL,能记录冠军Log4j2的日志量的大概82%。

    四.toString()方法比拼

    当 处理服务器日志的时候,每一个日志项的上下文(例如线程ID,类的相关上下文,时间戳等等)都是和日志内容一样重要。在之前的测试中,使用的是在大多数日 志文件中常见的标志――线程ID号和时间戳。接下来我们认为值得去分析单纯在日志中使用.toString()方法的性能。

    这个时候,Log4j2是赢家(如果改变配置,能获得180%的性能提升),赢出Logback和JUL 大概25%。SL4FJ SL则落败。在每轮的五次测试中,SLF4J SL在启用appenders的时候性能比不启用要好。

    Log4j在吞吐量上有15%的增加。JUL在这轮比拼中比不上Log4j和Log4j2,其结果和不使用上下文数据是一样的。

    ITJS的这篇文章的测试代码可以在https://github.com/takipi/the-logging-olympics中下载。

    译文来源:51cto廖煜嵘译

    上一篇返回首页 下一篇

    声明: 此文观点不代表本站立场;转载务必保留本文链接;版权疑问请联系我们。

    别人在看

    帝国CMS7.5编辑器上传图片取消宽高的三种方法

    帝国cms如何自动生成缩略图的实现方法

    Windows 12即将到来,将彻底改变人机交互

    帝国CMS 7.5忘记登陆账号密码怎么办?可以phpmyadmin中重置管理员密码

    帝国CMS 7.5 后台编辑器换行,修改回车键br换行为p标签

    Windows 11 版本与 Windows 10比较,新功能一览

    Windows 11激活产品密钥收集及专业版激活方法

    如何从 Windows 11 中完全删除/卸载 OneNote?无解!

    抖音安全与信任开放日:揭秘推荐算法,告别单一标签依赖

    ultraedit编辑器打开文件时,总是提示是否转换为DOS格式,如何关闭?

    IT头条

    华为Pura80系列新机预热,余承东力赞其复杂光线下的视频拍摄实力

    01:28

    阿里千问3开源首战告捷:全球下载破千万,国产AI模型崛起新高度!

    01:22

    DeepSeek R1小版本试升级:网友实测编程能力已达到国际一线水平

    23:15

    NVIDIA 与 Dell 合作,大规模交付 Blackwell AI 系统

    20:52

    Cerebras 以最快的 Llama 4 Maverick 性能引领 LLM 推理竞赛

    20:51

    技术热点

    PHP中的随机性——你觉得自己幸运吗?

    搞定Ubuntu Linux下WPA无线上网

    Java使用内存映射实现大文件的上传

    MySQL安全性指南

    MySQL两项性能的基本测试浅谈

    教您使用UniqueIdentifier选取SQL Server主键

      友情链接:
    • IT采购网
    • 科技号
    • 中国存储网
    • 存储网
    • 半导体联盟
    • 医疗软件网
    • 软件中国
    • ITbrand
    • 采购中国
    • CIO智库
    • 考研题库
    • 法务网
    • AI工具网
    • 电子芯片网
    • 安全库
    • 隐私保护
    • 版权申明
    • 联系我们
    IT技术网 版权所有 © 2020-2025,京ICP备14047533号-20,Power by OK设计网

    在上方输入关键词后,回车键 开始搜索。Esc键 取消该搜索窗口。