【发布时间】:2009-09-03 20:56:27
【问题描述】:
【问题讨论】:
-
几乎任何东西都比
java.util.logging好,即使这意味着引入第 3 方依赖项。
【问题讨论】:
java.util.logging 好,即使这意味着引入第 3 方依赖项。
在我看来,JDK Logger 唯一要做的就是它是 JDK 的一部分,因此它不会添加外部依赖项。如果只能在这两者之间进行选择,我会选择 Log4j。它在附加程序、知道它的人数(在我的轶事观察中)和更好的 API(这也是主观的)方面仍然有更好的支持。
今天开始一个项目,最诱人的做法是使用 slf4j 并推迟决定 - 您总是可以通过更改类路径在 slf4j 下插入不同的框架。
话虽如此,还有其他选项(例如 Log5j)可以利用最新的 Java 语言功能。我建议仔细看一下Logback(来自 Log4j 的主要程序员之一,slf4j 也是)。
【讨论】:
我从未使用过直接的 JDK 记录器,但对于一个新项目,我强烈推荐 Logback, 设计为 log4j 的继任者。你可以用它做一些非常好的事情:
从
if (log.isDebugEnabled())
{
log.warn (i + "many ints,"+ l+"many longs");
}
到
log.debug("{} many ints, {} many longs", i, l);
缺点 - 无论如何,很多包都需要 log4j,因为它很常见,所以您的项目可能需要包含 2 个日志记录包。
【讨论】:
对于一个新项目,我强烈推荐 slf4j 项目,它为多个记录器框架提供通用前端。
Steve B 描述的 {} 语法也存在于 slf4j(同一作者)中,因此无论后端如何,您都可以获得所有好处,并且仍然获得后端独立性。还有一个 log4j 桥可用,因此现有代码可以透明地使用 slf4j。真的很不错。
对于实际的后端,logback 很不错,但您可能已经投资了 log4j - 这很容易利用。
【讨论】:
我会推荐JDK logging API。我已经使用了很多年,没有任何问题。它是 JDK 的一部分,因此不需要额外的 jar。 log4j 和 JDK 日志记录之间的区别很小,在我看来,不证明使用 log4j 是合理的。
【讨论】:
标准 API 与 log4j
Java 开发人员提出的一个常见问题是:
为什么我们应该在 Java 提供 API 时使用 log4j 日志框架 用于记录。 java API可以通过(java.util.logging)访问吗?
Log4j 与标准日志 API 相比具有以下优势:
【讨论】:
我在这个问题上挣扎了好几次;用jdk7和jdk8; java 日志记录超级快速和流畅,但我们只需要在配置时戴上程序员的帽子。
要登录到多个文件目标,我们需要创建扩展 FielHandler 的 signare 类,并在属性文件中使用它们来配置,这种复杂性看起来很耗时,但一旦你获得了挂起,效率和可靠性都很棒。
【讨论】: