Ich habe tonnenweise Beiträge und Dokumente (auf dieser Website und anderswo) gelesen, die darauf hinweisen, dass das empfohlene Muster für die SFL4J-Protokollierung lautet:
public class MyClass {
final static Logger logger = LoggerFactory.getLogger(MyClass.class);
public void myMethod() {
//do some stuff
logger.debug("blah blah blah");
}
}
Mein Chef zieht es vor, dass wir nur einen Wrapper verwenden, um Log-Aufrufe abzufangen und Boiler-Plate-Code zur Deklaration des Loggers in jeder Klasse zu vermeiden:
public class MyLoggerWrapper {
public static void debug(Class clazz, String msg){
LoggerFactory.getLogger(clazz).debug(msg));
}
}
und sie einfach so zu verwenden:
public class MyClass {
public void myMethod() {
//do some stuff
MyLoggerWrapper.debug(this.getClass(), "blah blah blah");
}
}
Ich vermute, dass die Instanziierung eines Loggers jedes Mal, wenn wir protokollieren, etwas teuer ist, aber ich konnte kein Dokument finden, das diese Annahme unterstützt. Außerdem sagt er, dass das Framework (LogBack oder Log4J, wir entscheiden noch) die Logger "zwischenspeichern" wird und dass die Server auf jeden Fall weit unter ihrer Kapazität laufen, so dass dies kein Problem darstellt.
Kann mir jemand helfen, mögliche Probleme bei diesem Ansatz aufzuzeigen?