经常使用日志框架Log4j,Logback,Log4j2性能比较与日志门面SLF4J简介

经常使用日志框架数据库

Log4j微信

Log4j是Apache的一个Java的日志库,经过使用Log4j,咱们能够控制日志信息输送的目的地(控制台、文件、数据库等);咱们也能够控制每一条日志的输出格式;经过定义每一条日志信息的级别,咱们可以更加细致地控制日志的生成过程。多线程


Logback架构

Logback,一个“可靠、通用、快速而又灵活的Java日志框架”。logback当前分红三个模块:logback-core,logback- classic和logback-access。logback-core是其它两个模块的基础模块。logback-classic是log4j的一个改良版本。此外logback-classic完整实现SLF4J API使你能够很方便地更换成其它日志系统,如log4j或JDK14 Logging。logback-access模块与Servlet容器(如Tomcat和Jetty)集成,以提供HTTP访问日志功能。请注意,您能够在logback-core之上轻松构建本身的模块。框架


Log4j2异步

Apache Log4j 2是对Log4j的升级,它比其前身Log4j 1.x提供了重大改进,并提供了Logback中可用的许多改进,同时修复了Logback架构中的一些问题。async


如今最优秀的Java日志框架是Log4j2,没有之一。根据官方的测试代表,在多线程环境下,Log4j2的异步日志表现更加优秀。在异步日志中,Log4j2使用独立的线程去执行I/O操做,能够极大地提高应用程序的性能。性能


Log4j1/Logback/Log4j2性能比较测试

在官方的测试中,Log4j1/Logback/Log4j2三个日志框架的异步日志性能比较以下图所示。spa


其中,Loggers all async是基于LMAX Disruptor实现的。可见Log4j2的异步日志性能是最棒的。

下图比较了Log4j2框架SyncAsync AppendersLoggers all async三者的性能。其中Loggers all async表现最为出色,并且线程数越多,Loggers all async性能越好。

日志门面SLF4J

上述介绍的是一些日志框架的实现(Log4j、Logback、log4j2),这里咱们须要用日志门面来解决系统与日志实现框架的耦合性。SLF4J,即简单日志门面(Simple Logging Facade for Java),它不是一个真正的日志实现,而是一个抽象层( abstraction layer),它容许你在后台使用任意一个日志实现。

前面介绍的几种日志框架同样,每一种日志框架都有本身单独的API,要使用对应的框架就要使用其对应的API,这就大大的增长应用程序代码对于日志框架的耦合性。

使用了SLF4J后,对于应用程序来讲,不管底层的日志框架如何变,应用程序不须要修改任意一行代码,就能够直接上线了。

原文连接:

https://blog.csdn.net/ThinkWon/article/details/101621135

本文分享自微信公众号 - 源代码社区(ydmsq666)。
若有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一块儿分享。

相关文章
相关标签/搜索