如何在 java.util.logging 中获取记录器以便我可以在运行时更改它们的日志级别?
How to get loggers in java.util.logging so i can change their log level at runtime?
我在不同的 class 中使用 java.util.logging
。日志级别的默认值为 INFO
。例如,在一个 class Class1
中,它是这样设置的:
import java.util.logging.Handler;
import java.util.logging.Level;
import java.util.logging.Logger;
public class Class1 {
private static final Logger LOGGER = Logger.getLogger(Class1.class.getName());
static {
LOGGER.setLevel(Level.INFO);
for (Handler handler : LOGGER.getHandlers()) {
handler.setLevel(Level.INFO);
}
}
...
}
以上是在不同的class中设置的相同方式。
现在可以在运行时更改日志级别。例如,假设它在运行时更改为 FINEST
。在这种情况下,我想获取到目前为止已创建的所有记录器,然后将它们的日志级别更改为 FINEST
。我怎样才能做到这一点?我正在考虑创建另一个 class 说 LogRepository
,它有一个 java.util.List
,每当创建一个 LOGGER 时,我都会将它添加到 LogRepository
的 java.util.List
中。但我认为可能还有另一种更好的方法。
我相信这只是设置所有实例继承自的父记录器级别的问题。
Logger.getLogger("").setLevel(Level.FINEST);
我在不同的 class 中使用 java.util.logging
。日志级别的默认值为 INFO
。例如,在一个 class Class1
中,它是这样设置的:
import java.util.logging.Handler;
import java.util.logging.Level;
import java.util.logging.Logger;
public class Class1 {
private static final Logger LOGGER = Logger.getLogger(Class1.class.getName());
static {
LOGGER.setLevel(Level.INFO);
for (Handler handler : LOGGER.getHandlers()) {
handler.setLevel(Level.INFO);
}
}
...
}
以上是在不同的class中设置的相同方式。
现在可以在运行时更改日志级别。例如,假设它在运行时更改为 FINEST
。在这种情况下,我想获取到目前为止已创建的所有记录器,然后将它们的日志级别更改为 FINEST
。我怎样才能做到这一点?我正在考虑创建另一个 class 说 LogRepository
,它有一个 java.util.List
,每当创建一个 LOGGER 时,我都会将它添加到 LogRepository
的 java.util.List
中。但我认为可能还有另一种更好的方法。
我相信这只是设置所有实例继承自的父记录器级别的问题。
Logger.getLogger("").setLevel(Level.FINEST);