logback log4j log4j2 性能实测
logback log4j log4j2 性能实测
转载:
https://blog.souche.com/logback-log4j-log4j2shi-ce/
日志已经成为系统开发中不可或缺的一部分. 但是针对logback, log4j和log4j2. 究竟改如何选择? 到底性能如何? 今天我们做一个实际的测评. 相信看完这篇文章, 对这三个日志框架会有很清楚的一个了解.
实验环境
- OS: Mac OS X 10.12.1
- CPU: 2.6 GHz Intel Core i5
- 内存: 8 GB 1600 MHz DDR3
为了说明, 测试的准确性, 把测试过程展示出来
首先 把项目建起来 log4j-1.2.17, logback-1.1.7, log4j2-2.7, slf4j-api-1.7.21 保证用的jar包版本都一样.

然后配置各自的配置文件, 我们为了保证测试效果, 三种框架采取同样的输出格式, 在异步输出的时候, 都采取512的缓存.
log4j.xml

logback.xml

log4j2.xml

写两个测试方法


看结果

- 可见在同步日志模式下, Logback的性能是最糟糕的.
- 而log4j2的性能无论在同步日志模式还是异步日志模式下都是最佳的.
其根本原因在于log4j2使用了LMAX, 一个无锁的线程间通信库代替了, logback和log4j之前的队列. 并发性能大大提升, 下期文章将研究一下LMAX, 到底是什么
实用信息
关于log4j2的新特性
- 丢数据这种情况少,可以用来做审计功能。而且自身内部报的exception会被发现,但是logback和log4j不会。
- log4j2使用了disruptor技术,在多线程环境下,性能高于logback等10倍以上。
- (garbage free)之前的版本会产生非常多的临时对象,会造成GC频繁,log4j2则在这方面上做了优化,减少产生临时对象。尽可能少的GC
- 利用插件系统,使得扩展新的appender,filter,layout等变得容易,log4j不可以扩展 插件????
- 因为插件系统的简单性,所以在配置的时候,可以不用具体指定所要处理的类型。class
- 可以自定义level
- Java 8 lambda support for lazy logging
- Support for Message objects
- 对filter的功能支持的更强大
- 系统日志(Syslog)协议supports both TCP and UDP
- 利用jdk1.5并发的特性,减少了死锁的发生。
- Socket LogEvent SerializedLayout
- 支持kafka queue
logback log4j log4j2 性能实测的更多相关文章
- 常见java日志系统的搭配详解:关于slf4j log4j log4j2 logback jul jcl commons-logging jdk-logging
先看一张图: 是不是有点晕, 晕就对了.这个仅仅是 slf4j 的情况,实际上, 我们不仅要接触到 slf4j ,有时候还会接触其他的日志系统.且看下文分解. 1 直接使用各个日志系统 1.1 直接使 ...
- Spring Boot(十)Logback和Log4j2集成与日志发展史
一.简介 Java知名的日志有很多,比如:JUL.Log4j.JCL.SLF4J.Logback.Log4j2,那么这些日志框架之间有着怎样的关系?诞生的原因又是解决什么问题?下面一起来看. 1.1 ...
- 关于slf4j log4j log4j2的jar包配合使用的那些事
由于java日志框架众多(common-logging,log4j,slf4j,logback等),引入jar包的时候,就要为其添加对应的日志实现.. 不同的jar包,可能用了不同的日志框架,那引用了 ...
- Log4j,Log4j2,logback,slf4j日志学习
日志学习笔记 Log4j Log4j是Apache的一个开放源代码项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台.文件.数据库等:我们也可以控制每一条日志的输出格式:通过定义每一条 ...
- Log4j,Log4j2,logback,slf4j日志学习(转)
日志学习笔记Log4jLog4j是Apache的一个开放源代码项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台.文件.数据库等:我们也可以控制每一条日志的输出格式:通过定义每一条日志 ...
- (六)Spring Boot之日志配置-logback和log4j2
一.简介 支持日志框架:Java Util Logging, Log4J2 and Logback,默认是使用logback 配置方式: 默认配置文件配置 引用外部配置文件配置 二.默认配置文件配置( ...
- logback&log4j异步日志配置
logback 原始配置 配置 appender, 控制文件的滚动方式,日志的输出格式. <appender name="method-time-appender" clas ...
- 痞子衡嵌入式:飞思卡尔i.MX RT系列MCU特性介绍(2)- RT1052DVL6性能实测
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是飞思卡尔i.MX RT系列MCU的性能. 在前面的文章 i.MXRT微控制器概览 里,痞子衡给大家简介过恩智浦半导体在2017年推出的新 ...
- Log4j/Log4j2自定义Appender来实现日志级别计数统计及监控
一.简述 本文主要讲如何基于Log4j2来实现自定义的Appender.一般用途是用于Log4j2自带的Appender不足以满足我们的需求,或者需要我们对日志进行拦截统计等操作时,需要我们自定义Ap ...
随机推荐
- Docker组件与元素(三)
说明: 这篇博文是根据国外的另一篇总结而来,第一个链接为原文,第二个为译文,第三个有几个图挺好 http://blog.flux7.com/blogs/docker ...
- C语言编程知识点
(1)预处理指令#define 声明一个常数,用以表明1年中有多少秒(忽略闰年问题):#define SECONDS_PER_YEAR (60 * 60 * 24 * 365)UL 1) #defin ...
- forward reference前向引用,gloal values and local values全局变量和局部变量,recursive function递归函数
1.全局变量与局部变量练习 1 # -*- coding: UTF-8 -*- 2 def bar(): 3 print('from bar') 4 def foo(): 5 print('from ...
- storj白皮书v3最全面解读,Docker创始人的加入能否扳倒AWS S3
Storj新发了白皮书v3,地址是:https://storj.io/storjv3.pdf. 这次白皮书一共有90页,看完还真要费不少时间.如果你没有时间看,可以看一下我这篇快速技术解读. 上次St ...
- [UE4]Window Title Bar Area
一.Window Title Bar Area.windows窗口拖拽控件 二.window Buttons Enabled,在控件的右上角显示:最小化.最大化,关闭按钮; Toggle Fullsc ...
- vue源码核心部分
1.模板编译 初始化时做的:template ==parse()==>ASTtree ==generate()==>render函数 ==> mount(调用dom方法) 每次 ...
- SSH Secure Shell Client中文乱码的解决方法
http://www.cnblogs.com/52linux/archive/2012/03/24/2415082.html 方案一:修改linux服务器的环境变量 使用linux,在用户根目录下有一 ...
- 第26课 可变参数模板(7)_any和variant类的实现
1. any类的实现 (1)any类: ①是一个特殊的,只能容纳一个元素的容器,它可以擦除类型,可以将何任类型的值赋值给它. ②使用时,需要根据实际类型将any对象转换为实际的对象. (2)实现any ...
- C语言数据结构基础学习笔记——栈和队列
之前我们学过了普通的线性表,接下来我们来了解一下两种特殊的线性表——栈和队列. 栈是只允许在一端进行插入或删除的线性表. 栈的顺序存储结构也叫作顺序栈,对于栈顶指针top,当栈为空栈时,top=-1: ...
- 502 Bad Gateway
状态码解释: 502 Bad Gateway:作为网关或者代理工作的服务器尝试执行请求时,从上游服务器接收到无效的响应. 502 原因分析: 将请求提交给网关如php-fpm执行,但是由于某些原因没有 ...