wtorek, 1 lipca 2008

Log4J w 4 krokach

Nigdy więcej nie będę logować stanu aplikacji przez System.out.print :)
Ani też pisał własnych naiwnych implementacji loggerów.
Wszystko to dzięki Log4J, żeby go używać naprawdę potrzebujemy 4 kroków:

1. plik konfiguracyjny
Dzięki koledze Mariuszowi (Dzięki !)
dowiedziałem się, że wystarczy taki plik o nazwie np. config.properties

log4j.rootLogger=INFO,A1
log4j.appender.A1=org.apache.log4j.RollingFileAppender
log4j.appender.A1.File=log4j.log
log4j.appender.A1.MaxFileSize=1000KB
log4j.appender.A1.MaxBackupIndex=10
log4j.appender.A1.layout=org.apache.log4j.PatternLayout

# Print the date in ISO 8601 format
log4j.appender.A1.layout.ConversionPattern=\t%d [%t] %-5p %c%n%m%n


I teraz krótko co to znaczy:
log4j.rootLogger=INFO,A1
ustawia nam poziom logowania na 'INFO' a nazwę głównego loggera, do którego będziemy się dalej odnosić jako A1.
Dalej okreslamy nazwę pliku logów, jego maksymalny rozmiar, ilosć plików backupów do których jest kopiowana zawartosć logu po przekroczeniu maksymalnej wielkosci.
log4j.appender.A1.layout.ConversionPattern to magiczny wzorzec, który okrela co zostanie zapisane do pliku logów.

2. Sciągamy sobie log4j-1.2.15.jar i dodajemy do classpatha.
3. W metodzie main inicjalizujemy log4j używając do tego pliku config.properties:
public static void main(String[] argv) {
PropertyConfigurator.configure("log4j.properties");
........

4. W każdej klasie logującej inicjalizujemy logger dla nas
private static Logger logger = Logger.getLogger(MyLog4jExample.class);

I już można używać loggera w metodach klasy MyLog4jExample :)

logger.info("start loggera");