Przejdź do głównej zawartości

Log4j - konfiguracja i przykład użycia

· 2 min aby przeczytać
Log4j - konfiguracja i przykład użycia

Log4j jest popularną biblioteką do tworzenia logów dla aplikacji napisanych w języku Java.

Dodawanie zależności Maven

Na początku należy dodać zależność w pliku pom.xml. Najnowszą wersję zależności znajdziesz tutaj.

pom.xml
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.15.0</version>
</dependency>

Konfiguracja

Następnie należy dokonać konfiguracji, w tym celu tworzymy plik XML o nazwie log4j2.xml w katalogu ./src/main/resources. Przykładowa konfiguracja została przedstawiona poniżej.

log4j2.xml
<?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>

Więcej informacji na temat konfiguracji oraz samego pliku konfiguracyjnego znajdziesz tutaj.

Przykładowa implementacja

W pierwszej kolejności należy zaimportować poniższe klasy z paczki org.apache.logging.log4j.

import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;

Następnie tworzymy obiekt Logger za pomocą statycznej metody getLogger().

private final Logger LOG = LogManager.getLogger(getClass());

Teraz możemy korzystać z loggera za pomocą poniższych metod.

LOG.info("Information message");
LOG.warn("Warning message");
LOG.error("Error message");

Można również wyświetlać zawartość zmiennych bez konieczności używania znaku "+".

int count = 5;
LOG.info("Count={}", count);

Otrzymany rezultat:

Zawartość terminala
Zawartość terminala

W przypadku, gdy chcemy skorzystać z loggera z poziomu metody statycznej musimy stworzyć instancję loggera w następujący sposób:

private static final Logger LOG = LogManager.getLogger();

Przewagą loggera nad standardowym poleceniem System.out.println() jest, że rejestrowane są dodatkowe informacje odnośnie czasu oraz nazwy metody z której informacja została wygenerowana.