更改Logger实例的全局设置

我使用java.util.logging.Logger作为应用程序的日志记录引擎。每个类都使用自己的记录器,即每个类都有:

private final Logger logger = Logger.getLogger(this.getClass().getName());

我想为我所有的班级设置一个日志记录级别,并且能够更改它(即,将设置放在一个地方)。除了使用全局Level变量并手动将每个记录器设置为变量之外,还有其他方法吗?

回答:

正如Andy回答的那样,在大多数情况下,您应该使用属性文件和VM参数,因此它与您的代码无关。

但是,如果您出于某种原因要进行编程(我自己有一个很好的理由),您也可以这样访问Handler:

Logger rootLogger = LogManager.getLogManager().getLogger("");

rootLogger.setLevel(Level.INFO);

for (Handler h : rootLogger.getHandlers()) {

h.setLevel(Level.INFO);

}

我将setLevel添加到根记录器中,如searchengine27在他的回答中指出的那样。

处理程序是您通过属性或通过编程设置的文件或控制台处理程序。

或像这样更改过滤器:

Logger rootLogger = LogManager.getLogManager().getLogger("");

rootLogger.setFilter(new Filter() {

@Override

public boolean isLoggable(LogRecord record) {

return "something".equals(record.getLoggerName());

}

});

以上是 更改Logger实例的全局设置 的全部内容, 来源链接: utcz.com/qa/422197.html

回到顶部