为什么一个将使用以下一个软件包,而不是其他的?

  • Java记录
  • 下议院的日志记录
  • Log4j
  • SLF4j
  • Logback
有帮助吗?

解决方案

按时间顺序api外观(就我所知):

  • Log4j因为大多数的每个人都使用它(以我的经验)
  • 下议院的日志记录,因为开放源项目使用(使他们能够融入任何记录框架,用于综合方案);尤其是有效的,如果你是一个API/Framework/开放源码软件和依赖于其他软件包,使用公共记录。
  • 下议院的日志记录,因为你不想要"锁定"对一个特定日志框架(而不是你锁定下来什么样的公共记录给你代替)-我不认为这是明智的决定利用这一点为理由。
  • Java记录,因为你不想添加一个额外的罐子。
  • SLF4j因为这是比较新的公共记录和提供了参数化的记录:

logger.debug("The entry is {}.", entry);
//which expands effectively to
if (logger.isDebugEnabled()){
    // Note that it's actually *more* efficient than this - see Huxi's comment below...
    logger.debug("The entry is " + entry + "."); 
}
  • Logback因为这是比较新的log4j并再次支持参数化的记录,因为它实现了直接SLF4j
  • SLF4j/Logback因为它是由同样的家伙是谁做的log4j,所以他是使它更好地(根据 肯G -谢谢。它似乎适合当看 他们早先的新闻文章)
  • SLF4j因为他们还发布一log4j适配器,所以你不必为"转换了"log4j在老年码-只是让log4j.性使用SLF4j和它配置

其他提示

我找到记录在Java是混乱的,不一致,缺乏记录,尤其是杂乱无章。此外,还有大量相似之间的这些记录框架,导致重复工作和混乱是什么记录的环境实际。特别是,如果你都工作在一个严重的Java网应用程序叠,你常常在 记录环境在一个时间;(e。克休眠可以使用log4j,并tomcat java。工具.记录).Apache识共享意味着桥梁的不同日志框架,但真的只是增加了更多的复杂性。如果你不知道这个时间提前,这是完全令人困惑。为什么我的日志的邮件不打印出来到控制台,等等?哦因为我找在Tomcat日志,并且不log4j.增加又一层复杂性,应用程序服务器可能具有全球记录的配置,可能不认识到当地的配置,对一个特定的网页应用程序。最后,所有这些记录日志框架方法太复杂。记录在Java已杂乱无章的混乱留下的开发人员像我这样的沮丧和混乱。

早期版本的Java没有一个内置记录框架,导致这种情况。

还有一个重要的一点,并没有提到之前:

SLF4J(和两Logback和LOG4J作为记录后台)具有支持所谓的映射诊断方面(MDC,请参阅 如果是的话,为什么不试文档).

这基本上是一个线程的地方的地图<String,String> 你可以用于添加额外背景信息,以你的记录的事件。当前状态的MDC附于每一个事件。

这可能是非常有用的,如果你把东西喜欢的用户名和网址的请求(在情况下的一个网络应用程序)进入。这可以自动使用一种过滤器,例如。

还请参见问题的答案 什么是最佳做法记录一个错误?, ,特别是:

  • 有一些潜力 类加载问题与知识共享 记录。

  • Log4J和SLF4J制定了 同一个人,从中学习 问题在实践中发现具Log4J.

在我们的公司项目中,我们使用LOG4j并且它非常易于使用的喜欢斯蒂芬显示在他的例子。我们还有写我们自己的模式类LOG4j所以你可以创建自己的输出的文件架构。你可以描述如何你的记录文件。它可以增强原始log4j课程。

所有LOG4j性质,你可以改变一个log4j.性文件,因此您可以使用不同的文件,对于不同的项目。

Java记录不是我的骄子,但这可能是因为我使用log4j从一开始。

下议院的日志记录概述 给它的存在的原因:记录从图书馆的代码,当你有没有控制权的基本记录框架。非常重要的各种Apache项目,这些项目将被链接到外部应用程序。也许不那么重要,对内部的项目,在那里,你有完全的控制。

这就是说,我写信给下议院的日志记录,因为这样做的许多其他开发的我知道。原因是最大限度地减少心理行李:你可以改变的项目或工作,而不需要学习一种新的框架(提供了新的工作/项目还采用CL,并且/或者你可以说服他们移动)。

此外,还有一些值创造你自己包装的任何框架使用。作为描述 在这里,, 我喜欢用LogWrapper目的在于提供定义stringification(重要),并尽量减少这些混乱的日志记录的声明(较重要)。

通常我会默认使用Log4J.

我会用Java记录如果我不介意一个依赖Java1.4但我仍然使用Log4J在的偏好。

我会使用公共记录,如果我提高的东西,已经使用过它。

我会建议创建一个薄记录的门面,可以写任何记录框架,在这一点的选择支持发动机变得相当多的有争议的问题。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top