Skip to main content

Log4j bez konfiguracji

Często piszę króciutkie programy z samym mainem tylko po to, aby sprawdzić działania nieznanej funkcji API czy właśnie zaimplementowanego algorytmu. Ot taki proof-of-concept jeszcze przed napisaniem testów jednostkowych (wiem, wiem, testy piszemy najpierw, ale...)

Aby zachować pewne standardy staram się nawet w takim testowym kodzie używać Log4j do pary z commons-logging zamiast klasycznego System.out.println(). Nie tylko lepiej wygląda, ale też Log4j zapewnia pewne dodatkowe informacje. Niestety kod:



import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

class Main {

  private static final Log log = LogFactory.getLog(Main.class);

  public static void main(String[] args) {
  log.info("Example message");
  }
}

 
spowoduje wyświetlenie co najwyżej znanego skądinąd błędu:


log4j:WARN No appenders could be found for logger (Main).
log4j:WARN Please initialize the log4j system properly.


W takich sytuacjach z reguły kopiowałem plik log4j.xml z jakiegokolwiek innego projektu, ewentualnie delikatnie go poprawiając. Całe szczęście framework zapewnia znacznie prostszą metodę konfiguracji:


import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.log4j.BasicConfigurator;

class Main {

 private static final Log log = LogFactory.getLog(Main.class);

 public static void main(String[] args) {
BasicConfigurator.configure();
  log.info("Example message");
}
}


I wreszcie spodziewany wynik bez żadnych niepotrzebnych plików konfiguracyjnych:

0 [main] INFO Main  - Example message

Comments

  1. O dziękiii - działa rewelka :-)

    ReplyDelete

Post a Comment