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.
<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.
<?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:
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.