privateboolean useParentHandlers(String loggerName) {
String s = props.getProperty(loggerName + ".useParentHandlers"); if (s == null) returntrue; // default is true
s = s.toLowerCase(); if (s.equals("true") || s.equals("1")) { returntrue;
} elseif (s.equals("false") || s.equals("0")) { returnfalse;
} returntrue;
}
publicsynchronizedboolean addLogger(Logger logger) {
String name = logger.getName(); if (namedLoggers.containsKey(name)) { returnfalse;
}
namedLoggers.put(name, logger); // set level if (props.get(name + ".level") != null) {
logger.setLevel(Level.parse(props.getProperty(name + ".level")));
} // add handlers if (props.get(name + ".handlers") != null && logger.getHandlers().length == 0) {
logger.addHandler(new CustomHandler());
} if (!useParentHandlers(name)) {
logger.setUseParentHandlers(false);
} // add parent loggers int ix = 1; for (;;) { int ix2 = name.indexOf(".", ix); if (ix2 < 0) { break;
}
String pname = name.substring(0, ix2); if (props.get(pname + ".level") != null ||
props.get(pname + ".handlers") != null) { // This pname has a level/handlers definition. // Make sure it exists. // // The test doesn't set the parent for simplicity. if (!namedLoggers.containsKey(pname)) {
Logger parent = Logger.getLogger(pname); if (!useParentHandlers(pname)) {
parent.setUseParentHandlers(false);
}
}
}
ix = ix2 + 1;
} returntrue;
}
String s = INSTANCE.getProperty(name + ".useParentHandlers"); boolean uph = (s != null && s.equals("false")) ? false : true; if (logger.getUseParentHandlers() != uph) { thrownew RuntimeException("Logger \"" + name + "\" unexpected useParentHandlers: " +
logger.getUseParentHandlers());
}
checkParents(name);
}
privatestaticvoid checkParents(String name) { int ix = 1; for (;;) { int ix2 = name.indexOf(".", ix); if (ix2 < 0) { break;
}
String pname = name.substring(0, ix2); if (INSTANCE.getProperty(pname + ".level") != null ||
INSTANCE.getProperty(pname + ".handlers") != null) { // This pname has a level/handlers definition. // Make sure it exists.
checkLogger(pname);
}
ix = ix2 + 1;
}
}
// only CustomLogManager can create an instance of CustomHandler privateclass CustomHandler extends StreamHandler {
}
}
Messung V0.5 in Prozent
¤ Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.0.13Bemerkung:
(vorverarbeitet am 2026-06-10)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.