logback与log4j比较

  • 更快的执行速度: 基于咱们先前在log4j上的工做,logback 重写了内部的实现,在某些特定的场景上面,甚至能够比以前的速度快上10倍。在保证logback的组件更加快速的同时,同时所需的内存更加少。
  • logback-classic 很是天然的实现了SLF4J:ogback-classic中的longging类天然的实现了SLF4J。当你使用 logback-classic做为底层实现时,涉及到LF4J日记系统的问题你彻底不须要考虑。更进一步来讲,因为 logback-classic强烈建议使用SLF4J做为客户端日记系统实现,若是须要切换到log4j或者其余,你只须要替换一个jar包便可,不须要去改变那些经过SLF4J API 实现的代码。这能够大大减小更换日记系统的工做量。
  • 自动从新载入配置文件:Logback-classic能够在配置文件被修改后,自动从新载入。这个扫描过程很快,无资源争用,而且能够动态扩展支持在上百个线程之间每秒上百万个调用。它和应用服务器结合良好,而且在JEE环境通用,由于它不会调用建立一个单独的线程来作扫描。
  • 优雅地从I/O错误中恢复:FileAppender和它的子类,包括RollingFileAppender,能够优雅的从I/O错误中恢复。因此,若是一个文件服务器临时宕机,你不再须要重启你的应用,而日志功能就能正常工做。当文件服务器恢复工做,logback相关的appender就会透明地和快速的从上一个错误中恢复。
  • 自动清除旧的日志归档文件:经过设置TimeBasedRollingPolicy 或者 SizeAndTimeBasedFNATP的 maxHistory 属性,你就能够控制日志归档文件的最大数量。若是你的回滚策略是每个月回滚的,而且你但愿保存一年的日志,那么只需简单的设置maxHistory属性为12。对于12个月以前的归档日志文件将被自动清除。
  • 自动压缩归档日志文件:RollingFileAppender能够在回滚操做中,自动压缩归档日志文件。压缩一般是异步执行的,因此即便是很大的日志文件,你的应用都不会所以而被阻塞。
  • 配置文件中的条件处理:开发者一般须要在不一样的目标环境中变换logback的配置文件,例如开发环境,测试环境和生产环境。这些配置文件大致是同样的,除了某部分会有不一样。为了不重复,logback支持配置文件中的条件处理,只需使用<if>,<then><else>,那么同一个配置文件就能够在不一样的环境中使用了。
  • 过滤: Logback拥有远比log4j更丰富的过滤能力。例如,让咱们假设,有一个至关重要的商业应用部署在生产环境。考虑到大量的交易数据须要处理,记录级别被设置为WARN,那么只有警告和错误信息才会被记录。如今,想象一下,你在开发环境遇到了一个臭虫,可是在测试平台中却很难发现,由于一些环境之间(生产环境/测试环境)的未知差别。使用log4j,你只能选择在生产系统中下降记录的级别到DEBUG,来尝试发现问题。可是很不幸,这会生成大量的日志记录,让分析变得困难。更重要的是,多余的日志记录会影响到生产环境的性能。使用logback,你能够选择保留只全部用户的WARN级别的日志,而除了某个用户,例如Alice,而她就是问题的相关用户。当Alice登陆系统,她就会以DEBUG级别被记录,而其余用户仍然是以WARN级别来记录日志。这个功能,能够经过在配置文件的XML中添加4行。请在相关章节中查找MDCFilter
相关文章
相关标签/搜索