Tipp: Logging Shortcuts

Category: 

Logging Frameworks wie Log4J sind sehr wichtige Tools, jedoch muss man manchmal sehr viel Code mehrfach schreiben, damit jede Klasse einen eigenen Logger erhält. Dank Java 8 können wir dieses Problem reduzieren.

Das Problem

Für jede Klasse schreiben wir nahezu die selbe Zeile und anschließend müssen wir immer wieder logger.debug(...) aufrufen. Letzteres ist zwar kein großes Problem, jedoch schon etwas unschön. Das eigentliche Problem ist die Code Wiederholung.
public class A {
  private static Logger logger = Logger.getLogger(A.class);

  public void methodA() {
    logger.debug("Debug message");
  }
  // ...
}
public class B {
  private static Logger logger = Logger.getLogger(B.class);

  public void methodB() {
    logger.debug("Debug message");
  }
  // ...
}

Java 8 Rettung

Dank Java 8 und den default-Implementierungen von Interfaces, können wir ein einfaches Loggable Interface schreiben, welches immer den passenden Logger bereitstellt.
Außerdem können wir häufig verwendete Aufrufe verkürzen.

public interface Loggable {
  public default Logger getLogger() {
    return Logger.getLogger(getClass());
  }

  public default void debug(Object msg) {
    getLogger().debug(msg);
  }

  public default void debug(Object msg, Throwable throwable) {
    getLogger().debug(msg, throwable);
  }
}

Nun lassen wir unsere Klassen das Interface implementieren und können direkt die debug Methode aufrufen.

public class A implements Loggable {
  public void methodA() {
    debug("Debug message");
  }
  // ...
}