通过 logger.log 覆盖处理程序级别
override handler level through logger.log
有没有办法通过记录器对象覆盖处理程序的级别。
例如:
FileHandler logFile = new FileHandler("DefaultLogger.log");
logger.setLevel(Level.FINE);
也应该将 fileHandler 的级别设置为 fine。
您可以使用 Logger::getHandlers 方法获取给定记录器的所有安装处理程序。例如:
private static void setHandlersLevel(Logger logger, Level lvl) {
for (Handler h : logger.getHandlers()) {
h.setLevel(lvl);
}
}
否则,如果您想在所有记录器上找到所有处理程序,您可以使用以下命令:
private static void setAllHandlersLevel(Level lvl) {
LogManager lm = LogManager.getLogManager();
synchronized (lm) {
Enumeration<String> e = lm.getLoggerNames();
while (e.hasMoreElements()) {
Logger l = lm.getLogger(e.nextElement());
if (l != null) {
for (Handler h : l.getHandlers()) {
h.setLevel(lvl);
}
}
}
}
}
有没有办法通过记录器对象覆盖处理程序的级别。
例如:
FileHandler logFile = new FileHandler("DefaultLogger.log");
logger.setLevel(Level.FINE);
也应该将 fileHandler 的级别设置为 fine。
您可以使用 Logger::getHandlers 方法获取给定记录器的所有安装处理程序。例如:
private static void setHandlersLevel(Logger logger, Level lvl) {
for (Handler h : logger.getHandlers()) {
h.setLevel(lvl);
}
}
否则,如果您想在所有记录器上找到所有处理程序,您可以使用以下命令:
private static void setAllHandlersLevel(Level lvl) {
LogManager lm = LogManager.getLogManager();
synchronized (lm) {
Enumeration<String> e = lm.getLoggerNames();
while (e.hasMoreElements()) {
Logger l = lm.getLogger(e.nextElement());
if (l != null) {
for (Handler h : l.getHandlers()) {
h.setLevel(lvl);
}
}
}
}
}