// ## The LogManager.demandLogger method does not handle custom log manager // ## that overrides the getLogger method to return a custom logger // ## (see the test case in 8005640). Logger.getLogger may return // ## a Logger instance but LogManager overrides it with a custom Logger // ## instance like this case. // // However, the specification of LogManager and Logger subclassing is // not clear whether this is supported or not. The following check // just captures the current behavior. if (logger instanceof CustomLogger) { thrownew RuntimeException(logger + " not CustomLogger");
}
}
/* *ThisSimpleLogManageroverridestheaddLoggermethodtoreplace *thegivenloggerwithacustomlogger. * *It'sunclearwhattherecommendedwaytousecustomloggeris. *ALogManagersubclassmightoverridethegetLoggermethodtoreturn *acustomLoggerandcreateanewcustomloggerifnotexistsothat *Logger.getLogger()canreturnacustomLoggerinstancebutthatviolates *theLogManager.getLogger()specwhichshouldreturnnullifnotfound.
*/ publicsynchronizedboolean addLogger(Logger logger) {
String name = logger.getName(); if (namedLoggers.containsKey(name)) { returnfalse;
}
CustomLogger newLogger = new CustomLogger(logger); returnsuper.addLogger(newLogger);
}
publicclass CustomLogger extends Logger { final Logger keepRef; // keep a strong reference to avoid GC.
CustomLogger(Logger logger) { super(logger.getName(), logger.getResourceBundleName());
keepRef = logger;
}
}
}
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.11Bemerkung:
(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.