Log4j 2的特性和改进
Posted 小杨Vita
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Log4j 2的特性和改进相关的知识,希望对你有一定的参考价值。
本文译自:
http://logging.apache.org/log4j/2.x/index.html
详细目录
Apache Log4j 2 中文文档
Log4j 2的一些特性和改进
API分离
Log4j 2的API与实现是分离的,在保证向前兼容的前提下,这让开发人员使用其类和方法时更加直观清晰。同时也让Log4j开发团队能够以一种兼容的方式更加安全地改进实现类。
性能提升
Log4j 2使用了下一代的异步Logger,它基于LMAX Disruptor库(一个基于环形缓冲区的高性能进程间消息库)。在多线程情景中,异步Logger比Log4j 1.x和Logback的吞吐量高了18倍,延迟也低了很多个数量级。具体的数据请看 异步日志性能 。Log4j 2完胜Log4j 1.x、Logback以及java.util.logging,特别是在多线程应用中,详细信息请看 性能 。
支持多种API
Log4j 2 API在提供了最佳性能的同时,还提供了对Log4j 1.2、SLF4J、Commons Logging 和 java.util.logging (JUL) API的支持(需要适配器)。
避免封锁
通过使用 log4j-to-slf4j 适配器,使用Log4j 2 API编写的应用通常可以选择使用任何SLF4J标准库作为logger的实现。
自动重新加载配置文件
和Logback类似,当配置文件被修改时Log4j 2将自动重新加载。但与Logback不同的是,在重新加载过程中它不会丢失掉日志事件。
插件架构
Log4j使用插件模式来配置组件,这么以来你就不用手写代码来创建并配置Appender、Layout、Pattern转换器了。当配置文件引用了某个插件时,Log4j将自动识别并使用之。
支持属性替换
你可以在配置文件中引用属性,Log4j会直接替换掉它们或是将其传递给底层组件来动态解析之。属性值可以来自于配置文本、系统属性、环境变量、 ThreadContext Map和事件中的数据。用户还可通过添加自己的Lookup 插件来进一步定制属性提供者。
支持Java 8 Lambda表达式
此前,当一个日志消息需要花费比较大的代价来创建时,你通常需要先显式地检查日志级别是否允许输出。现在基于Java 8的应用可以享受Log4j Lambda表达式支持的便利,因为Lambda表达式会被延迟执行,详见示例 。
定制日志级别
在Log4j 2中,日志级别可以通过代码或是配置文件轻松定义,无需子类化。
不产生垃圾
在稳定打印日志时, Log4j 2不会在单机应用中产生垃圾 ,在web应用中仅产生少量的垃圾。这降低了垃圾收集器的压力,同时提供了更好的响应性能。
转载请注明出处:Log4j 2的特性和改进
http://blog.csdn.net/yangcheng33/article/details/52725882
以上是关于Log4j 2的特性和改进的主要内容,如果未能解决你的问题,请参考以下文章