logback和log4j区别.xml immediate=false 到底缓存空间是多大

logback和log4j区别是要与SLF4J结合起来用两个组件的官方网站如下:

    本文章用到的组件如下:请自行到官方网站下载!

    1、更快的实现  logback和log4j区别的内核重写了在一些关键执行路径上性能提升10倍以上。而且logback和log4j区别不仅性能提升了初始化内存加载也更小了。

    2、非常充分的测试  logback和log4j区别经过了几年数不清小时的测试。logback和log4j区别的測试完全不同级别的在作者的观点,这是简单重要的原因选择logback和log4j区别而不是log4j

以切换到log4j或者其他,非常容易只需要提供成另一个jar包就OK,根本不需要去动那些通过SLF4JAPI实现的代码

    5、自动重新加载配置文件  当配置文件修改了,logback和log4j区别-classic能自动重新加载配置文件扫描过程快且安铨,它并不需要另外创建一个扫描线程这个技术充分保证了应用程序能跑得很欢在JEE环境里面。

    8、配置文件可以处理不同的情况   开发人员經常需要判断不同的logback和log4j区别配置文件在不同的环境下(开发测试,生产)而这些配置文件仅仅只有一些很小的不同,可以通过,和来实現这样一个配置文件就可以适应多个环境。

    9、Filters(过滤器)  有些时候需要诊断一个问题,需要打出日志在log4j,只有降低日志级别不过這样会打出大量的日志,会影响应用性能在logback和log4j区别,你可以继续 保持那个日志级别而除掉某种特殊情况如alice这个用户登录,她的日志将咑在DEBUG级别而其他用户可以继续打在WARN级别要实现这个功能只需 加4行XML配置。可以参考MDCFIlter

   11、自动压缩已经打出来的log  RollingFileAppender在产生新文件的时候,会自動压缩已经打出来的日志文件压缩是个异步过程,所以甚至对于大的日志文件在压缩过程中应用不会受任何影响。

     
     
     
     
     




对于logback和log4j区别的使用详细使用方法及配置推荐阅读以下文章:

Log4j 2包含基于LMAX Disruptor库的下一代异步记录器在多线程场景中,异步记录器的吞吐量比Log4j 1.x和logback和log4j区别高18倍延迟低。有关详细信息请参阅异步日志记录性能否则,Log4j 2明显优于Log4j 1.xlogback和log4j区别和java.util.logging,尤其是在多线程应用程序中

LMAX Disruptor技术异步记录器在内部使用Disruptor,一个无锁的线程间通信库而不是队列,从而产生更高的吞吐量和更低的延遲

原因在于log4j2使用了LMAX, 一个无锁的线程间通信库代替了, logback和log4j区别和log4j之前的队列. 并发性能大大提升, 下期文章将研究一下LMAX, 到底是什么

默认情况下,異步记录器不会将位置传递给I / O线程 如果您的某个布局或自定义过滤器需要位置信息,则需要在所有相关记录器的配置中设置“includeLocation = true”包括根记录器。

不需要位置的配置可能如下所示:

可以在配置中组合同步和异步记录器这为您提供了更大的灵活性,但代价是性能略有下降(与使所有记录器异步相比)使用或配置元素指定需要异步的记录器。配置只能包含一个根记录器(或元素)但是可以组合异步和非異步记录器。例如包含元素的配置文件还可以包含同步记录器的和元素。

默认情况下异步记录器不会将位置传递给I / O线程。如果您的某個布局或自定义过滤器需要位置信息则需要在所有相关记录器的配置中设置“includeLocation = true”,包括根记录器

混合异步记录器的配置可能如下所示:

如果其中一个布局配置了与位置相关的属性,如HTML locationInfo或其中一个模式%C或$ class,%F或%file%l或%location,%L或%line%M或%方法,Log4j将获取堆栈的快照並遍历堆栈跟踪以查找位置信息。

这是一项昂贵的操作:同步记录器的速度要慢1.3到5倍同步记录器在获取此堆栈快照之前会尽可能长时间等待。如果不需要位置则永远不会拍摄快照。

但是异步记录器需要在将日志消息传递给另一个线程之前做出此决定;在该点之后,位置信息将丢失对于异步记录器,获取堆栈跟踪快照的性能影响甚至更高:使用位置记录比没有位置的记录慢30-100倍因此,默认情况下异步記录器和异步追加器不包含位置信息。

下图比较了同步记录器异步appender和异步记录器的吞吐量。 这是所有线程的总吞吐量 在使用64个线程的測试中,异步记录器比异步记录器快12倍比同步记录器快68倍。

异步记录器的吞吐量随着线程数的增加而增加而同步记录器和异步追加器嘟具有或多或少的常量吞吐量,而不管执行日志记录的线程数是多少

我们还将异步记录器的峰值吞吐量与其他日志记录包中可用的同步記录器和异步appender进行了比较,特别是log4j-1.2.17和logback和log4j区别-1.0.10结果类似。 对于异步appender在添加更多线程时,所有线程的总日志吞吐量保持大致不变 异步记錄器可以在多线程方案中更有效地使用机器上可用的多个内核。

下图放大了同一测试的Log4j 2结果 我们看到基于ArrayBlockingQueue的Async Appender的最坏情况响应时间最高。 無垃圾异步记录器具有最佳响应时间行为

我要回帖

更多关于 logback 的文章

 

随机推荐