【问题标题】:java logging vs Log4j in Spring framework. Which one is the most suitableSpring 框架中的 java 日志记录与 Log4j。哪个最合适
【发布时间】:2010-11-20 12:25:08
【问题描述】:

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

任何帮助将不胜感激。

谢谢!

【问题讨论】:

标签: java spring web-applications logging log4j


【解决方案1】:

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

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

【讨论】:

  • 切换日志框架被高估了! Log4j 没有任何问题,它支持大量的文件写入选项,并且可以完成所需的工作。
  • "请打开 Javascript 来查看这个菜单" - 抱歉 logback,你失败了。
  • 他没有切换,他正在查看他的第一个日志框架。在这种情况下,他不应该从老前辈开始。
  • @Michael:我建议告诉作者。我对此无能为力:)而且由于我使用的是 Maven,所以我也不在乎。
  • 谢谢大家。现在,由于这里有些人已经使用过 log4j,我们将尝试使用它。我建议使用 logback,但你知道当时间用完时开发人员是多么不愿意尝试新事物。但是,它还没有被完全丢弃。现在只是测试选项
【解决方案2】:

无论您在自己的代码中使用哪种日志记录框架,据我所知,Spring 对 commons-logging 有很强的依赖性。你仍然可以使用任何你喜欢的东西来记录你自己的日志(我推荐 SLF4J 作为你的外观,使用 logback 作为你的实现),但是 Spring 内部需要 commons-logging。是否要依赖多个框架是你的选择;它不应该被证明是有问题的。

【讨论】:

  • 明确一点:slf4j 带有一个用于 commons-logging 的适配器,因此您的项目中不需要 commons-logging.jar。见slf4j.org/legacy.html
【解决方案3】:

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

只要您的日志抽象工具(使用 slf4j)记录到与您在 spring 中配置公共日志记录相同的日志记录框架,那么您就很好了。两者的一个日志配置。你可能会找到一个用于 commons 和 slf4j 的 logback 适配器。

【讨论】:

  • Commons Logging 很容易模拟,因此 SLF4J 提供了一个 Commons Logging 外观,它位于通常的 SLF4J API 之上。通过这种方式,您可以将 Spring 与 SLF4J(和 Logback)一起使用。
【解决方案4】:

由于其他回复并没有真正回答你的问题,我想我会尝试一下。

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

【讨论】:

  • 感谢 skaffman,现在我们正在尝试使用 log4j,JUL 看起来确实有点棘手。
猜你喜欢
  • 2010-09-07
  • 1970-01-01
  • 2011-06-17
  • 2014-06-19
  • 1970-01-01
  • 2020-02-21
  • 2016-07-19
  • 2018-10-07
  • 1970-01-01
相关资源
最近更新 更多