经常使用日志框架数据库
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框架Sync
、Async Appenders
和Loggers 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源创计划”,欢迎正在阅读的你也加入,一块儿分享。