Konfiguracja Log4j


Konfiguracja Log4j

Log4j to biblioteka która umożliwia tworzenie logów dla aplikacji napisanych w Javie. Pierwsze wydanie miało miejsce w 2007 roku. Wersja 1.2 uznawana jest za wersję stabilną, wersja 1.3 nie jest dalej rozwijana natomiast wersja 2.0 jest w fazie rozwoju i testów. Log4j zakłada 3 typy obiektów, są to Loggery które odpowiadają za tworzenie logów i nadawanie im odpowiednich priorytetów, Appendery które odpowiadają za to gdzie logi mają trafić oraz Layout’y czyli wygląd tworzonych logów. Zaczynamy od projektu opartego o mavena i dodania zależności do pliku konfiguracyjnego pom.xml:

<dependency>
	<groupId>log4j</groupId>
	<artifactId>log4j</artifactId>
	<version>1.2.17</version>
</dependency>

W pliku ./src/main/resources/log4j2.xml zamieszczamy opis konfiguracji logów:

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
    <Appenders>
        <Console name="Console" target="SYSTEM_OUT">
            <PatternLayout
                    pattern="%d{HH:mm:ss.SSS} [%t] %highlight{%level}{FATAL=bg_red, ERROR=red, WARN=yellow, INFO=green, DEBUG=blue} %logger{36} - %msg%n"/>
        </Console>
    </Appenders>
    <Loggers>
        <Root level="INFO">
            <AppenderRef ref="Console"/>
        </Root>
    </Loggers>
</Configuration>

Powyższy wpis opisuje to w jaki sposób logi na poziomie INFO mają być wyświetlane na standardowe wyjście. W miejscu w którym chcemy użyć mechanizmu logowania należy dodać:

final static Logger logger = Logger.getLogger(ShowBingoCardControllerWithForwardToJsp.class.getName());

oraz w miejscu w którym chcemy zalogować już konkretną informację należy dodać:

 logger.info("numbers generated until bingo " + allGeneratedNumbers.toString());

Wynik będzie następujący:

16-Aug-2019 10:28:01.262 INFO [http-nio-8084-exec-5] controllers.ShowBingoCardControllerWithForwardToJsp.getWinner numbers generated until bingo [65, 1, 67, 6, 8, 72, 73, 15, 17, 18, 23, 25, 31, 33, 34, 37, 40, 41, 44, 48, 49, 52, 56, 57, 63]

 


Leave a comment

Your email address will not be published.


*