3年前 (2021-12-16)  Java系列 |   抢沙发  2679 
文章评分 1 次,平均分 5.0

日志框架Log4j与Logback的区别

Log4j与Logback之间的差异

Log4j被定义为基于java的应用程序,带有日志功能,它是用于将消息记录到不同输出的java框架,有助于定位问题。Logback被定义为log4j的继承者log4j也是用于在任何基于java的应用程序中记录消息的java框架。一般来说,log4j和logback是java的日志框架,用于在运行时修改配置,也可以在不同的目的地进行输出。log4j有不同的版本(log4j1、log4j2、lg4j3等),与logback框架类似的版本是log4j2。因此,由于log4j和logback在性能上处于相同的位置,在当前版本中,log4j已关闭,并且仅使用log4j2和logback而不是log4j和logback。

Log4j与Logback之间的关键区别

Log4j与Logback之间的一些主要区别:

  • 更好的版本:当我们比较log4j和logback的版本时,log4j优于小于1.2.1的logback版本。随着logback的改进,版本log4j和版本log4j2与logback在性能或任何特性方面都没有区别。因此,log4j是logback新版本发明之前使用最多的日志工具。
  • 实现:由于log4j是一个较旧的版本,现在新的logback内部结构得到了改进,在关键执行上的工作速度比log4j快十倍,而log4j中也不支持较小的内存占用。
  • 自动重新加载配置文件:在logback中,通过使用带有修改的logback-classic支持重新加载配置文件。在log4j中,这是通过configureAndWatch方法使用DOMconfigurator PropertyConfigurator完成的。尽管在log4j中通过configureAndWatch方法创建了一个单独的线程,并且该线程无法停止,因此对JEE来说是不安全的,但在logback中,该logback经典在JEE环境中运行良好,因为在扫描过程中不会创建任何线程。
  • 根日志记录器:在logback中,根日志记录器通过<Root>元素配置,该元素可以支持级别属性,如跟踪、信息、调试、错误、警告、全部或关闭。而根记录器是由log4j中的调试级别定义的。在logback中,无法继承根记录器的级别,在log4j中,根记录器始终是配置的记录器,并且可以通过子记录器继承。请注意,定义日志记录级别时区分大小写。
  • 过滤器:在log4j中,提供的过滤功能选项比logback少得多。因为在log4j中,日志记录要降低到调试级别,这将创建更多日志记录数据,导致分析日志记录数据的复杂性,降低性能。但这不是回写的情况,因为我们可以在警告级别停止;客户可以在警告级别等待,而不是在调试级别登录并创建更多日志信息。

Log4j与Logback比较表

让我们讨论一下Log4j与Logback之间的主要比较:

Log4j Logback
这是一个日志组件,用于按照基于java的日志实用程序中的说明记录消息。 这是一个日志java框架,用于在基于java的应用程序中记录消息。
这是一个工具,用于控制编辑用于存储selenium automation flow日志的任何配置文件的行为,而不会干扰应用程序。 这是一个用于错误监视和日志管理的工具,用于管理和调试日志消息,因此被认为是log4j的后续工具。
它分为3个不同的核心组件,例如用于与日志消息通信的记录器、目标日志消息所在的附加器,以及用于格式化消息以进行输出的布局。 它还被划分为与log4j中相同的3个核心组件,例如loggerappenderlayout,其中每个组件的工作方式与log4j中的相同。此logback还具有logback corelogback accesslogback classic等核心模块。
这提供了各种日志记录方法,如debug()error()fatal()warn()info()trace(),它们在各自的日志级别上工作。 这还提供了各种日志记录方法,如warn()debug()info()trace()error(),它们在各自的日志级别上工作。
在性能和实现方面,与logback相比,这一级别较低。 logback提供了更快、更好的性能和实施,因为它有多种选项,可以灵活地归档旧日志文件和配置文件。
这需要log4j-api- 2. X运行时的X类路径。其中,log4j在log4j2中查找配置文件log4j2.xml,不在log4j.xml。 这将类路径作为logback-classic.jar。运行时的jar。在logback-test.xml中查找配置文件,logback.groovy或logback.xml。
在较旧的环境中,log4j中的自动配置是一个相当大的问题,但是它可以检测到配置的更改,并使用monitorienterval属性重新配置它。 即使在应用程序运行时,也可以使用故障诊断工具和扫描参数在logback中进行自动配置。
这提供了log4j Appender,一些常用的是ConsoleAppenderRollingFileAppenderDailRolligFileAppenderAsyncAppenderJDBCAppenderJMSAppender等,其中布局与Appender一起用于格式化任何日志事件。 这还提供了一些日志回写追加器,如ConoleAppenderRollingFileAppenderFileAppendercustomAppender等,其中布局与追加器一起使用,以格式化日志消息,从而为各种应用程序需求提供默认的PatternLayout
当比较apachelog4j同步记录器和logback的性能时,log4j的速度要快25%。  当将logback与logback同步记录器进行比较时,logback的性能更差,但只有在logback版本低于1.2.1的情况下。因此,较新版本的logback是log4j的后续版本。
Log4j的同步appender是所有其他日志框架中速度最快的,但是Log4j的异步appender无法解决多线程日志记录中的错误。 对于多线程日志记录,也不建议使用Logback异步appender,因为这也无法调试错误,并且Logback同步appender的性能比log4j要低。

总结

这些基于Java应用程序的日志框架没有太大区别。只有在没有更高的logback版本时,log4j才被认为比logback少,但是现在logback被认为比log4j快。因此,我们不能推荐任何基于性能的java日志记录实用程序,因为缓冲处理程序实现会对其产生影响。所以在log4j和logback中没有太大的区别。

 

除特别注明外,本站所有文章均为老K的Java博客原创,转载请注明出处来自https://javakk.com/2502.html

关于

发表评论

表情 格式

暂无评论

登录

忘记密码 ?

切换登录

注册