Log4j - konfiguracja i przykład użycia

Posted on 21 September, 2018 at 14:17

Tags: Java


Log4j - konfiguracja i przykład użycia

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.11.1</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:

result
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.


Please provide a valid nick.
Please provide a valid content.

* These fields are required.