logback与Log4J的区别

Logback和log4j是很是类似的,若是你对log4j很熟悉,那对logback很快就会驾轻就熟。下面列举了logback相对于log4j的一些优势: 

1.更快的实现 
Logback的内核重写了,在一些关键执行路径上性能提高10倍以上。并且logback不只性能提高了,初始化内存加载也更小了。 

2.充分的测试
Logback通过了几年,数不清小时的测试。Logback的测试彻底不一样级别的。在做者的观点,这是简单重要的缘由选择logback而不是log4j。 

3.Logback-classic优雅地实现了SLF4j 
Logback-classic实现了SLF4j。在使用SLF4j中,你都感受不到logback-classic。并且由于logback-classic很是天然地实现了SLF4J,因此切换到log4j或者其余,很是容易,只须要提供成另外一个jar包就OK,根本不须要去动那些经过SLF4JAPI实现的代码。 

4.充分的文档 
官方网站有两百多页的文档。 

5.自动重载配置文件 
当配置文件修改了,Logback-classic能自动从新加载配置文件。扫描过程快且安全,它并不须要另外建立一个扫描线程。这个技术充分保证了应用程序能跑得很欢在JEE环境里面。 

6.Lilith 
Lilith是log事件的观察者,和log4j的chainsaw相似。而lilith还能处理大数量的log数据 

7.谨慎的模式和友好的恢复 
在谨慎模式下,多个FileAppender实例跑在多个JVM下,可以安全地写道同一个日志文件。RollingFileAppender会有些限制。Logback的FileAppender和它的子类包括RollingFileAppender可以很是友好地从I/O异常中恢复。 

8.配置文件能够处理不一样的状况 
开发人员常常须要判断不一样的Logback配置文件在不一样的环境下(开发,测试,生产)。而这些配置文件仅仅只有一些很小的不一样,能够经过,和来实现,这样一个配置文件就能够适应多个环境。 

9.Filters(过滤器) 
有些时候,须要诊断一个问题,须要打出日志。在log4j,只有下降日志级别,不过这样会打出大量的日志,会影响应用性能。在Logback,你能够继续保持那个日志级别而除掉某种特殊状况,如alice这个用户登陆,她的日志将打在DEBUG级别而其余用户能够继续打在WARN级别。要实现这个功能只需加4行XML配置。能够参考MDCFIlter 

10.SiftingAppender(一个多功能的Appender) 
它能够用来分割日志文件根据任何一个给定的运行参数。如,SiftingAppender可以区别日志事件跟进用户的Session,而后每一个用户会有一个日志文件。 

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

12.堆栈树带有包版本 
Logback在打出堆栈树日志时,会带上包的数据。 

13.自动去除旧日志 
经过设置TimeBasedRollingPolicy或者SizeAndTimeBasedFNATP的maxHistory属性,你能够控制已经产生日志文件的最大数量。若是设置maxHistory为12,那那些log文件超过12个月的都会被自动移除。 

总之,logback比log4j优秀不少,尽可能把应用所有创建logback上是比较好的作法。 
 安全

相关文章
相关标签/搜索