Spring框架中的java logging vs Log4j。哪一个是最合适的

时间:2009-08-18 08:03:24

标签: java spring web-applications logging log4j

我们正在使用Spring框架在Java中开发基于Web的应用程序。我们想知道哪个Logging系统最适合它,无论是Log4j还是JUL(java.util.Logging),它与jdk集成在一起。就我而言,前者在开发人员中更受欢迎,并提供更高的自定义选项,但我不确定哪个更容易适应spring。

任何帮助将不胜感激。

谢谢!

4 个答案:

答案 0 :(得分:5)

在开始使用log4j之前,请查看logback。 Log4j不应再用于新项目。如果您有遗留代码需要任何日志记录框架,请使用slf4j使旧代码与logback对话(如果必须,则使用log4j)。

你不应该使用JUL的主要原因是它实现了记录所需的最低限度,配置很难,如果你使用任何不使用它的组件,你将不得不处理有两个日志框架。

答案 1 :(得分:5)

无论您在自己的代码中使用哪种日志框架,据我所知,Spring对公共日志记录有很强的依赖性。您仍然可以使用您喜欢的任何内容进行自己的日志记录(我建议使用SLF4J作为您的外观,并使用logback作为您的实现),但Spring内部需要公共日志记录。您是否想要依赖多个框架是您的选择;它不应该证明是有问题的。

答案 2 :(得分:2)

Spring使用commons日志记录,这是一个日志抽象工具,但存在sl4j没有的问题。 Hibernate转移到了slf4j - 我希望看到spring也这样做,但我不认为他们在这方面有任何计划。

因此,只要你的日志抽象工具(使用slf4j)记录到你在春天配置公共登录的同一个日志框架,那么你就是好的。一个日志配置。您可能会找到适用于commons和slf4j的logback的适配器。

答案 3 :(得分:1)

由于其他回复实际上没有回答你的问题,我以为我会对它进行抨击。

首先,java.util.logging非常糟糕。这是一个痛苦的使用,并配置的痛苦。 Log4J在两个方面都更好。但是,您应该选择最适合的人。 Spring使用commons-logging,反过来将使用log4j(如果在类路径上找到)或java.util.logging。换句话说,如果您的应用程序已经存在log4j,那么Spring将有效地使用它,您也应该如此。如果log4j尚不存在,则使用java.util.logging(如果选择),或者将log4j添加到类路径中并使用它。