java.util.logger.setLevel() 和 handler.setLevel() 有什么区别?

Nag*_*S N 5 java logging java.util.logging

我在项目中使用 java.util.Logger,并且使用简单的 ConsoleHandler。默认情况下,日志记录级别为“信息”。我想将级别更改为“精细”。但是,我必须更改记录器和处理程序的级别。为什么?这有什么必要呢?为什么要这样设计呢?为什么我不能单独在 Logger/Handler 上设置级别并完成它?

Her*_*erb 4

一个Logger可以拥有多个Handlers。例如,记录器可能有 aConsoleHandler和 a FileHandler,它将同时向其转发日志事件。

ALogger和 aHandler可以具有不同的日志级别设置以用于过滤目的。

  • Logger.setLevel()将配置您的记录器仅从特定级别进行记录。
  • Handler.setLevel()将配置您的处理程序仅处理来自特定级别的记录器的日志事件。

通过这种方式,您可以设置记录器来Logger.setLevel(INFO)记录几乎所有内容。此外,您可以告诉您FileHandler,它附加到您的“信息”记录器,仅处理至少是警告的日志FileHandler.setLevel(WARNING)。您ConsoleHandler仍然会显示信息日志,在日志文件中您只能找到警告和错误。

试试看。这很简单。