答案 0 :(得分:11)
在我看来,JDK Logger唯一能做的就是它是JDK的一部分,所以它不会添加外部依赖。如果选择只在这两者之间,我会选择Log4j。对于appender,知道它的人数(在我的轶事观察中)以及更好的API(也是主观的),它仍然有更好的支持。
今天开始一个项目,最有吸引力的事情就是使用slf4j并做出决定 - 只需更改类路径,就可以在slf4j下面插入一个不同的框架。
据说还有其他选项(例如Log5j)可以利用最新的Java语言功能。我建议长篇大论Logback(来自Log4j的主要程序员之一,和slf4j一样)。
答案 1 :(得分:4)
我从未使用直接JDK记录器,但对于一个新项目,我非常推荐Logback, 设计为log4j的后继者。你可以用它做的一些非常好的事情:
从
开始if (log.isDebugEnabled())
{
log.warn (i + "many ints,"+ l+"many longs");
}
到
log.debug("{} many ints, {} many longs", i, l);
下行 - 许多软件包无论如何都需要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具有以下优势:
答案 5 :(得分:0)
我几次挣扎着这个问题;用jdk7和jdk8; java logging super fast and slick,但是我们只需要配置程序员帽子。
要记录多个文件destiantions,我们需要创建扩展FielHandler的signare类并在属性文件中使用它们进行配置,这种错综复杂似乎很耗时,但一旦你获得挂起效率和可靠性就很棒。