zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    centOS操作磁盘(命令行)
    TCP学习记录
    公务员考试考什么
    从动物科学到乐队鼓手,腾讯技术小哥的开源人生
    HarmonyOS实战—实现相亲APP
    oracle 以某个字符拆分成多行
    微信小程序预览 word、excel、ppt、pdf 等文件
    微信小程序相关问题排查技巧
    html 保留空格
    (转载)currentColor 让 CSS 更简短
  • 原文地址:https://www.cnblogs.com/yangcheng33/p/6557316.html
Copyright © 2011-2022 走看看