比较log4j和Logger

JDK的Logger与Apache log4j相比如何?

针对Java 6的新项目哪个更好? 他们如何在灵活性和可配置性方面进行比较?

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

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

话虽如此,还有其他选项(如Log5j)可以利用最新的Java语言function。 我建议长期看看Logback (来自Log4j的主要程序员之一,和slf4j一样)。

我从未使用过直接的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个日志包。

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

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

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

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

标准API与log4j

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

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

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

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

我好几次都在努力解决这个问题; 用jdk7和jdk8; java logging super fast and slick,但是我们只需要配置程序员帽子。

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