比较log4j和Logger

时间:2009-09-03 20:56:27

标签: java logging log4j

JDK的Logger与Apache log4j相比如何?

哪个更适合以Java 6为目标的新项目?他们如何在灵活性和可配置性方面进行比较?

6 个答案:

答案 0 :(得分:11)

在我看来,JDK Logger唯一能做的就是它是JDK的一部分,所以它不会添加外部依赖。如果选择只在这两者之间,我会选择Log4j。对于appender,知道它的人数(在我的轶事观察中)以及更好的API(也是主观的),它仍然有更好的支持。

今天开始一个项目,最有吸引力的事情就是使用slf4j并做出决定 - 只需更改类路径,就可以在slf4j下面插入一个不同的框架。

据说还有其他选项(例如Log5j)可以利用最新的Java语言功能。我建议长篇大论Logback(来自Log4j的主要程序员之一,和slf4j一样)。

答案 1 :(得分:4)

我从未使用直接JDK记录器,但对于一个新项目,我非常推荐Logback, 设计为log4j的后继者。你可以用它做的一些非常好的事情:

  • printf样式参数构建,如果logger.isDebugEnabled()保护,则不会有更多混乱的串联字符串受保护。

开始
if (log.isDebugEnabled())
 { 
    log.warn (i + "many ints,"+ l+"many longs");
}

log.debug("{} many ints, {} many longs", i, l);
  • 非常灵活的配置,包括将打印跟踪的配置。配置是xml,但是他们的站点包含一个实用程序,它将从你的log4j配置生成一个xml配置,以帮助你入门。

下行 - 许多软件包无论如何都需要log4j,因为它很常见,所以你的项目可能需要包含2个日志包。

答案 2 :(得分:3)

对于一个新项目,我强烈推荐slf4j项目,该项目为几个记录器框架提供通用前端。

Steve B描述的{} -syntax也存在于slf4j中(同一作者),因此无论后端如何都能获得所有好处,并且STILL获得后端独立性。此外,还有一个log4j桥,因此现有代码可以透明地使用slf4j。真的很棒。

对于实际的后端,logback很不错,但您可能已经投入了log4j - 这很容易实现。

答案 3 :(得分:1)

我会推荐JDK logging API。我已经使用了很多年,没有任何问题。它是JDK的一部分,因此不需要额外的jar。 log4j和JDK日志记录之间的区别很小,在我看来,不能证明log4j的使用是正确的。

答案 4 :(得分:1)

标准API与log4j

Java开发人员提出的一个常见问题是:

  

为什么我们应该在Java提供API时使用log4j日志框架   用于记录。 java API可以通过(java.util.logging)?

访问

与标准日志API相比,Log4j具有以下优势:

  • log4j提供强大的日志记录
  • log4j具有比标准日志记录API更多的可用功能
  • 配置和使用log4j更容易
  • log4j还有一个更强大的格式化系统
  • 许多附加程序和处理程序可用于log4j

答案 5 :(得分:0)

我几次挣扎着这个问题;用jdk7和jdk8; java logging super fast and slick,但是我们只需要配置程序员帽子。

要记录多个文件destiantions,我们需要创建扩展FielHandler的signare类并在属性文件中使用它们进行配置,这种错综复杂似乎很耗时,但一旦你获得挂起效率和可靠性就很棒。