Apache Log4j 2

Apache Log4j 2是对Log4j的升级,它比它的前辈Log4j 1提供了显著的改进。在解决Logback的架构中存在的一些固有问题时,提供了许多可用的改进。

特性

API分离

Log4j的API与实现分离,使应用程序开发人员清楚地知道,他们可以使用哪些类和方法来确保向前兼容性。这允许Log4j团队以一种兼容的方式安全地改进实现。

改进的性能

Log4j 2包含了基于LMAX破坏者库的下一代异步日志记录器。在多线程场景中,异步日志记录器的吞吐量比Log4j 1要高18倍,并且数量级要低。Log4j 1.x和Logback。有关详细信息,请参阅异步日志记录性能。否则,Log4j 2将显著优于Log4j 1。x,Logback java.util。日志记录,特别是在多线程应用程序中。更多信息请参见性能。

支持更多API
Log4j 2 API将提供最好的性能,Log4j 2为Log4j 1.2、SLF4J、Commons日志记录和java.util提供了支持。日志(7月)api。
 
避免锁定
对Log4j 2 API进行编码的应用程序总是可以选择使用任何slf4j兼容的库作为它们的日志程序实现,使用log4jslf4j适配器。
 

自动重新加载配置

与Logback一样,Log4j 2可以在修改后自动重新加载它的配置。与Logback不同的是,在重新配置的情况下,它将不会丢失日志事件。

先进的过滤

与Logback一样,Log4j 2支持基于上下文数据、标记、正则表达式和日志事件中的其他组件进行过滤。在传递给日志记录器或通过appender之前,可以指定过滤应用于所有事件。此外,过滤器还可以与日志记录器相关联。与Logback不同的是,你可以在任何情况下使用一个通用的过滤器类。

插件体系结构

Log4j使用插件模式来配置组件。因此,您不需要编写代码来创建和配置Appender、布局、模式转换器等等。Log4j自动识别插件并在配置引用它们时使用它们。

属性的支持

您可以在配置中引用属性,Log4j将直接替换它们,或者Log4j将把它们传递给一个将动态解析它们的底层组件。属性来自于配置文件中定义的值、系统属性、环境变量、ThreadContext映射和事件中的数据。用户可以通过添加自己的Lookup Plugin来进一步定制属性提供者。

Java 8λ支持

在此之前,如果一个日志消息的构建成本很高,那么在构造消息之前,您通常会显式地检查请求的日志级别是否启用。在Java 8上运行的客户机代码可以从Log4j的lambda支持中获益。由于Log4j不会对一个lambda表达式进行评估,如果请求的日志级别没有启用,那么使用较少的代码就可以实现相同的效果。

自定义日志级别

在Log4j 2中,可以很容易地在代码或配置中定义自定义日志级别。不需要子类化。

版本支持

在版本2.9.1中,Log4j支持Java 9,但是仍然可以在Java 7或8中工作。在这个版本中,log4j-api被打包为一个多版本jar,并且支持StackWalker和Process api的使用。

在版本2.4中,Log4J需要Java 7。

Log4j版本2.3和旧版本需要Java 6。

支持特性

XML configuration、Properties configuration、JSON configuration

CSV Layout、JSON Layout、XML Layout

Async Loggers

Kafka Appender、SMTP Appender、JMS Appender、JDBC Appender、JPA Appender、NoSQL Appender with MongoDB provider 等

log4j2简介的更多相关文章

  1. logger(三)log4j2简介及其实现原理

    一.log4j2简介 log4j2是log4j 1.x和logback的改进版,据说采用了一些新技术(无锁异步.等等),使得日志的吞吐量.性能比log4j 1.x提高10倍,并解决了一些死锁的bug, ...

  2. Log4j2 简介

    介绍 Log4j2是Log4j的升级版,与之前的版本Log4j 1.x相比.有重大的改进,修正了Logback固有的架构问题的同事,改进了许多Logback所具有的功能. 特性 一.API 分离 Lo ...

  3. log4j2笔记 #02# 启用异步日志

    索引 参考 Making All Loggers Asynchronous 第一步,添加相应的disruptor库 第二步,设置系统属性log4j2.contextSelector 第三步,检验! 参 ...

  4. log4j2使用教程

    Log4j2简介 log4j2是log4j 1.x 的升级版,2015年5月,Apache宣布log4j1.x 停止更新.最新版为1.2.17.   log4j2参考了logback的一些优秀的设计, ...

  5. Log4j2基本使用入门

    1.Log4j2简介 Apache Log4j 2是日志框架Log4j的升级, 它比其前身Log4j 1.x提供了重要的改进, 并且参考了Logback中许多有用的改进, 同时修复了Logback的一 ...

  6. Log4j2日志技术总结

    前言 现在流行是SLF4j和Log4j2组合的日志技术,但为了日志技术归类,故前因后果都将做一下介绍. 市场上流行的日志框架 JUL java util logging Java开发团队开发,Jdk原 ...

  7. 《手把手教你》系列基础篇(八十七)-java+ selenium自动化测试-框架设计基础-Log4j 2实现日志输出-上篇(详解教程)

    1.简介 Apache Log4j 是一个非常古老的日志框架,并且是多年来最受欢迎的日志框架. 它引入了现代日志框架仍在使用的基本概念,如分层日志级别和记录器. 2015 年 8 月 5 日,该项目管 ...

  8. 日志组件二:log4j2

    一.背景 随着业务服务(Server App)逐渐增加,我们的业务系统中的日志输出面临的问题越来越多,高并发下对磁盘io这块消耗的越来越大,因此,急需要一个高性能且最好能够支持异步输出日志的日志框架, ...

  9. Log4j2中的同步日志与异步日志

    1.背景 Log4j 2中记录日志的方式有同步日志和异步日志两种方式,其中异步日志又可分为使用AsyncAppender和使用AsyncLogger两种方式. 2.Log4j2中的同步日志 所谓同步日 ...

随机推荐

  1. javaWeb普通类获取ApplicationContext

    网上看了很多关于获取ApplicationContext的方法,五大方法,但是我用web服务使用成功的就这一个,自己记忆下. import javax.servlet.ServletContextEv ...

  2. search(16)- elastic4s-内嵌文件:nested and join

    从SQL领域来的用户,对于ES的文件关系维护方式会感到很不习惯.毕竟,ES是分布式数据库只能高效处理独个扁平类型文件,无法支持关系式数据库那样的文件拼接.但是,任何数据库应用都无法避免树型文件关系,因 ...

  3. PAT-1058 A+B in Hogwarts (进制转换)

    1058. A+B in Hogwarts If you are a fan of Harry Potter, you would know the world of magic has its ow ...

  4. OAUTH开放授权

    OAUTH开放授权 OAUTH开放授权为用户资源的授权提供了一个安全的.开放而又简易的标准.OAUTH的授权不会使第三方触及到用户的帐号信息例如用户名与密码等,即第三方无需使用用户的用户名与密码就可以 ...

  5. 5.List链表类型介绍和操作

    数据类型List链表 (1)介绍 list类型其实就是一个双向链表.通过push,pop操作从链表的头部或者尾部添加删除元素.这使得list既可以用作栈,也可以用作队列. 该list链表类型应用场景: ...

  6. [256个管理学理论]003.鳄鱼法则(Alligator Principle)

    鳄鱼法则(Alligator Principle) 来自于大洋彼岸的让你看不懂的解释: 这是经济学交易技术法则之一,也叫“鳄鱼效应”,它的意思是:假定一只鳄鱼咬住你的脚,如果你用手去试图挣脱你的脚,鳄 ...

  7. 以太坊智能合约开发框架Truffle

    前言 部署智能合约有多种方式,命令行的浏览器的渠道都有,但往往跟我们程序员的风格不太相符,因为我们习惯了在IDE里写了代码然后打包运行看效果. 虽然现在IDE中已经存在了Solidity插件,可以编写 ...

  8. 居然还有人这样解说mybatis运行原理

    目录 Mybatis基本认识 动态代理 JDK实现 CGLIB动态代理 总结 反射 Configuration对象作用 映射器结构 sqlsession执行流程(源码跟踪) Executor Stat ...

  9. MethodHandle(方法句柄)系列之三:invoke和invokeExact的区别

    先把代码贴上来,用的是一样的代码 /** * * @author LiuYeFeng<897908343@qq.com> * @date 2015年4月8日 下午10:41:13 * @C ...

  10. Spring Boot笔记(二) springboot 集成 SMTP 发送邮件

    个人博客网:https://wushaopei.github.io/    (你想要这里多有) 笔记:乘着项目迭代的间隙,把一些可复用的功能从项目中抽取出来,这是其中之一, 一.添加SMTP 及 MA ...