Java JDK日志API
为什么JDK的日志API被认为很差?使用第三方日志API(如ApacheLog4j)我们能获得什么好处?Log4j是在JDK的日志API之前创建的。现在,您应该更喜欢使用slf4j以facade的方式处理所有java日志世界 我在JDK的日志系统上使用了一个(非常非常薄的)自写层,因为它易于使用、易于配置和扩展。即使没有这一层,JDK的日志系统也足够了,因此(在我看来)不需要其他日志API。另外,由于它包含在JDK中,因此应该将其视为一种标准。对于大多数情况,java.util.Logging就可以了。大多数第三方日志记录包是在标准API有任何日志记录之前开发的。这是因为JDK的Logger类不是接口。 因此,您无法(很少)控制日志记录的执行方式 通过commons logging、log4j、slf4j,您可以选择如何以及在何处记录消息。是否将其放入文件、数据库、重定向到应用程序服务器日志等。 有了JDK日志记录,您就不能这样做了。它总是一个文件。 如果你想要另一个日志级别,你不能Java JDK日志API,java,logging,Java,Logging,为什么JDK的日志API被认为很差?使用第三方日志API(如ApacheLog4j)我们能获得什么好处?Log4j是在JDK的日志API之前创建的。现在,您应该更喜欢使用slf4j以facade的方式处理所有java日志世界 我在JDK的日志系统上使用了一个(非常非常薄的)自写层,因为它易于使用、易于配置和扩展。即使没有这一层,JDK的日志系统也足够了,因此(在我看来)不需要其他日志API。另外,由于它包含在JDK中,因此应该将其视为一种标准。对于大多数情况,java.util.Logging就
它确实使用了像slf4j这样的vararg,因此您不必事先连接字符串消息。但是其他缺点太大了。忽略历史记录是错误的:log4j实际上早于
java.util.logging
(仅在1.4中添加)。因此,它有一个3年左右的领先优势被确立为标准。重点是,log4j并不是因为成为JUL的替代品而真正流行。“应该”似乎相当确定,不是吗?这并不能真正回答问题,它只是修改了它:为什么选择(第三方依赖)slf4j而不是(内置)JUL?@Joachim Sauer,提供了理由。抱歉,这不好。如果您正在创建库,那么您应该选择slf4j,这样用户就可以将他们选择的实现插入facade,但是,如果它是最终产品,那么直接使用日志框架通常会更方便。@z7sg,假设使用slf4j而不是日志框架直接提高代码的可重用性,不是吗?所以这就是赖特的方式。这不是slf4j想要的非常非常薄的一层吗?也许吧,但它试图成为所有测井系统的非常非常薄的一层。:)这完全不准确。Java日志记录支持一个处理程序接口,它允许您记录任何内容。它还有9个级别可供登录