介绍
欢迎使用Log4j2!
介绍
几乎每个大型的应用程序都有自己的日志记录或API。为了保持一致,1996初欧盟SEMPER项目决定编写自己的的跟踪API。之后经过无数次增强,几个版本和API的演变成为一个流行的Jave日志包-log4j。这个包使用的是Apache软件许可证发布的。一个完全成熟的开源许可证。最新的log4j版本,包括源代码,类文件和文档可以在 http://logging.apache.org/log4j/2.x/index.html中找到。
在代码中插入日志语句是一种调试日志语句的低技术方法。这可能也是唯一的办法因为调试器并不总是可用或适用的。这通常是在多线程和分布式应用的情况。
经验表明,日志记录是开发周期的重要组成部分。 它提供几个优点。 它提供有关应用程序运行的精确上下文。 一旦插入代码,日志输出的生成不需要人为干预。 而且,日志输出可以保存在持久性媒介中以便以后研究。除了在开发周期中使用之外,还可以将足够丰富的日志包视为审计工具。。
正如布莱恩·w·克尔尼根(Brian W. Kernighan)和罗布·派克(Rob Pike)在他们真正优秀的著作《编程实践》(The Practice of Programming)中所言:
作为个人选择,我们倾向于不使用调试器获得堆栈或者一两个变量的值。其中一个理由是我们很容易迷失在复杂的数据结构的细节和控制流中。我们发现一步一步调试程序比认真思考和在关键位置加入输出语句和自检代码低效的多。点击陈述语句比仔细的阅读日志输出花的时间更多。决定把打印语句发在哪里要比单步执行到代码的关键部分花的时间更少,即使我们知道关键部分在哪里。更重要的是,调试语句与程序保持一致而调试会话是暂时的。
日志记录也有缺点,它会减慢程序的速度。如果太罗嗦,可能会导致很难找到关键点。为了解决这些问题,log4j设计为可靠的,快速和可扩展。由于日志记录很少是程序的主要关注点,所以Log4j API力求易于理解和使用。
Log4j 2
Log4j 1.x已被广泛采用于许多应用中。 然而,经过多年的发展,它已经放缓。 由于需要兼容Java的旧版本,因此维护变得更加困难,并在2015年8月"End of Life"(停止维护) 。它的替代方案SLF4J / Logback对框架进行了许多必要的改进。 那么为什么要使用Log4j 2呢?
以下是一些原因。
-
Log4j 2被设计成可以用作审计日志记录的框架。Log4j 1.x和Logback都会在重新配置时丢失事件。 Log4j 2不会。 在Logback中,Appender中的异常永远不会对应用程序可见。 在Log4j中,可以将Appender配置为允许异常渗透到应用程序。
-
Log4j 2包含基于LMAX Disruptor库的下一代异步记录器。在多线程方案中,异步记录器的吞吐量比Log4j 1.x和Logback高10倍,延迟低几个数量级。
-
Log4j 2对于独立应用程序是无垃圾的,对于稳定状态日志记录期间的Web应用程序来说会生成少量垃圾。 这减少了垃圾收集器的压力,并且可以提供更好的响应时间。
-
Log4j 2使用插件系统,通过添加新的Appenders, Filters, Layouts, Lookups,可以非常轻松地扩展框架,而无需对Log4j进行任何更改
-
由于插件系统配置比较简单。配置中的条目不需要指定类名.
-
支持自定义日志级别。 可以在代码或配置中定义自定义日志级别。
-
支持lambda表达式。 只有在启用了请求的日志级别时,在Java 8上运行的客户端代码才能使用lambda表达式来简洁的构造日志消息。 不需要显式检查级别,从而代码更简洁。
-
支持Message对象。 消息允许支持有趣和复杂的构造,通过日志系统传递并有效地操作。 用户可以自由创建自己的消息类型,并编写自定义Layouts,Filters and Lookups来操纵它们。
-
Log4j 1.x支持Appender上的过滤器。 Logback添加了TurboFilters,允许在事件由Logger处理之前过滤事件。 Log4j 2支持可以配置为在Logger处理事件之前处理事件的过滤器,因为它们由Logger或Appender处理。
-
许多Logback Appender不支持 Layout,只会以固定格式发送数据。大多数Log4j2 Appender支持 Layout,允许以任何所需格式传输数据。
-
Log4j 1.x和Logback中的Layout返回一个String。 这导致了Logback Encoders中专门讨论这个问题。 Log4j 2采用更简单的方法,Layouts总是返回一个字节数组。 这样做的好处是,它意味着它们几乎可以在任何Appender中使用,而不仅仅是写入OutputStream的Appender。
-
Syslog Appender支持TCP和UDP以及对BSD syslog和RFC 5424格式的支持。
-
Log4j 2利用Java 5并发支持并在尽可能低的级别执行锁定。 Log4j 1.x已知死锁问题。 其中许多已经在Logback中修复,但许多Logback类仍然需要在相当高的级别进行同步。。
-
它是一个Apache Software Foundation项目,遵循所有ASF项目使用的社区和支持模型。 如果您想贡献或获得提交更改的权利,请按照贡献中列出的路径进行操作。
原文链接(https://logging.apache.org/log4j/2.x/manual/inde)
- log4j2使用手册(中文)第一章 介绍
- log4j2使用手册(中文)第二章 架构
- log4j2使用手册(中文)第三章 Log4j 1.x 迁移至Log4j 2
- log4j2使用手册(中文)第四章 API
- log4j2使用手册(中文)第五章 Configuration
- log4j2使用手册(中文)第六章 使用
- log4j2使用手册(中文)第七章 Web Applications and JSPs
- log4j2使用手册(中文)第八章 Lookups
网友评论