Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JDK日志API_Java_Logging - Fatal编程技术网

Java JDK日志API

Java JDK日志API,java,logging,Java,Logging,为什么JDK的日志API被认为很差?使用第三方日志API(如ApacheLog4j)我们能获得什么好处?Log4j是在JDK的日志API之前创建的。现在,您应该更喜欢使用slf4j以facade的方式处理所有java日志世界 我在JDK的日志系统上使用了一个(非常非常薄的)自写层,因为它易于使用、易于配置和扩展。即使没有这一层,JDK的日志系统也足够了,因此(在我看来)不需要其他日志API。另外,由于它包含在JDK中,因此应该将其视为一种标准。对于大多数情况,java.util.Logging就

为什么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日志记录,您就不能这样做了。它总是一个文件。 如果你想要另一个日志级别,你不能


它确实使用了像slf4j这样的vararg,因此您不必事先连接字符串消息。但是其他缺点太大了。

忽略历史记录是错误的:log4j实际上早于
java.util.logging
(仅在1.4中添加)。因此,它有一个3年左右的领先优势被确立为标准。重点是,log4j并不是因为成为JUL的替代品而真正流行。“应该”似乎相当确定,不是吗?这并不能真正回答问题,它只是修改了它:为什么选择(第三方依赖)slf4j而不是(内置)JUL?@Joachim Sauer,提供了理由。抱歉,这不好。如果您正在创建库,那么您应该选择slf4j,这样用户就可以将他们选择的实现插入facade,但是,如果它是最终产品,那么直接使用日志框架通常会更方便。@z7sg,假设使用slf4j而不是日志框架直接提高代码的可重用性,不是吗?所以这就是赖特的方式。这不是slf4j想要的非常非常薄的一层吗?也许吧,但它试图成为所有测井系统的非常非常薄的一层。:)这完全不准确。Java日志记录支持一个处理程序接口,它允许您记录任何内容。它还有9个级别可供登录