更改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