java.util.logger.setLevel() 和 handler.setLevel() 有什么区别?
What is the difference between java.util.logger.setLevel() and handler.setLevel()?
我在我的项目中使用 java.util.Logger 并且我使用的是一个简单的 ConsoleHandler。默认情况下,日志记录级别为 'Info'。我想将级别更改为 'Fine'。但是,我必须同时更改 Logger 和 Handler 的级别。为什么?这有什么必要?为什么要这样设计?为什么我不能单独在 Logger/Handler 上设置级别并完成它?
一个Logger
可以拥有多个Handlers
。例如。一个记录器可能有一个 ConsoleHandler
和一个 FileHandler
,它将同时向它们转发日志事件。
A Logger
和 Handler
可以有不同的日志级别设置以用于过滤目的。
Logger.setLevel()
会将您的记录器配置为仅从
一定水平。
Handler.setLevel()
会将您的处理程序配置为
只处理来自某个级别的记录器的日志事件。
通过这种方式,您可以使用 Logger.setLevel(INFO)
设置记录器来记录几乎所有内容。
此外,您可以告诉您 FileHandler
,它附加到您的 "Info" 记录器,只处理至少是警告 FileHandler.setLevel(WARNING)
的日志。您 ConsoleHandler
仍会显示信息日志,而在您的日志文件中,您只会找到警告和错误。
试试吧。很简单。
我在我的项目中使用 java.util.Logger 并且我使用的是一个简单的 ConsoleHandler。默认情况下,日志记录级别为 'Info'。我想将级别更改为 'Fine'。但是,我必须同时更改 Logger 和 Handler 的级别。为什么?这有什么必要?为什么要这样设计?为什么我不能单独在 Logger/Handler 上设置级别并完成它?
一个Logger
可以拥有多个Handlers
。例如。一个记录器可能有一个 ConsoleHandler
和一个 FileHandler
,它将同时向它们转发日志事件。
A Logger
和 Handler
可以有不同的日志级别设置以用于过滤目的。
Logger.setLevel()
会将您的记录器配置为仅从 一定水平。Handler.setLevel()
会将您的处理程序配置为 只处理来自某个级别的记录器的日志事件。
通过这种方式,您可以使用 Logger.setLevel(INFO)
设置记录器来记录几乎所有内容。
此外,您可以告诉您 FileHandler
,它附加到您的 "Info" 记录器,只处理至少是警告 FileHandler.setLevel(WARNING)
的日志。您 ConsoleHandler
仍会显示信息日志,而在您的日志文件中,您只会找到警告和错误。
试试吧。很简单。