https://logging.apache.org/log4j/2.x/manual/api.html
Für den Nutzer sind insbesondere folgende Features von Vorteil:
3rd Party Libraries benutzen andere Logger, zum Beispiel:
Die Ausgaben dieser Logger sollten ebenfalls über Log4j 2 laufen.
Log
lookup methods. …”Java Util Logging wird über den Log4j JDK Logging Adapter angebunden: https://logging.apache.org/log4j/2.x/log4j-jul/index.html
Logger
wird als (private) statische Variable mit Namen “LOGGER” abgelegt. Der Parameter in getLogger(...)
ist die umgebende Klasse:
private static final Logger LOGGER = LogManager.getLogger(MyClass.class);
${:import(org.apache.logging.log4j.Logger, org.apache.logging.log4j.LogManager)}
private static final Logger LOGGER = LogManager.getLogger(${enclosing_type}.class);
Bei dynamischen Log Ausgaben wird keine String-Concatination gemacht. Vielmehr wird Parameter Substitution ggf. mit Lambda Ausdrücken gemacht:
Statt
if (logger.isDebugEnabled()) {
logger.debug("Logging in user " + user.getName() + " with birthday " + user.getBirthdayCalendar());
}
wird folgendes verwendet:
logger.debug("Logging in user {} with birthday {}", user.getName(), user.getBirthdayCalendar());
In diesem Fall ist auch keine Abfrage des Log-Levels benötigt if (logger.isDebugEnabled())
.