Logback configureren
Appenders, patronen en niveaus
Logback configureren is een gratis Java Academy-les op CoddyKit. Dit is les 4 van 4. Je kunt de volledige les hieronder gratis lezen en daarna in de browser praktisch oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject Java Academy. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus Java Academy bevat in totaal 4 lessen.
Wat is Logback?
Logback is een populair achterliggend systeem voor SLF4J, geschreven door dezelfde auteur als Log4j. Het voert daadwerkelijk de logboekregistratie uit die de aanroepen van SLF4J beschrijven.
Je configureert het met een bestand met de naam logback.xml op het classpath, meestal onder src/main/resources.
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class Main {
private static final Logger log = LoggerFactory.getLogger(Main.class);
public static void main(String[] args) {
log.info("Logback reads logback.xml at startup");
}
}Drie bouwstenen
De configuratie van Logback heeft drie kernbegrippen:
- Logger: benoemde bron van logboekgebeurtenissen, met een niveau.
- Appender: een bestemming (console, bestand).
- Encoder/indeling: maakt van de gebeurtenis tekst.
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class Main {
private static final Logger log = LoggerFactory.getLogger(Main.class);
public static void main(String[] args) {
log.info("logger -> appender -> encoder -> output");
}
}Een console-appender
De eenvoudigste configuratie stuurt alles naar de console. Het patroon van de encoder bepaalt de indeling van de regels.
Deze XML staat in logback.xml, niet in je Java-code.
<configuration>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%d{HH:mm:ss.SSS} %-5level %logger{36} - %msg%n</pattern>
</encoder>
</appender>
<root level="info">
<appender-ref ref="STDOUT" />
</root>
</configuration>Het patroon begrijpen
Woorden voor patroonconversie beginnen met %:
%dtijdstempel,%levelhet niveau.%loggerde naam van de logger,%threadde thread.%msgje bericht,%neen nieuwe regel.
%-5level vult het niveau links aan tot een breedte van 5.
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class Main {
private static final Logger log = LoggerFactory.getLogger(Main.class);
public static void main(String[] args) {
// Output rendered by pattern: time LEVEL logger - message
log.info("hello");
}
}De rootlogger en niveaus
Het element <root> stelt het standaardniveau voor de hele toepassing in en bepaalt naar welke appenders deze schrijft.
Als je level="info" instelt, worden INFO, WARN en ERROR uitgevoerd; DEBUG en TRACE worden onderdrukt.
<configuration>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder><pattern>%-5level %logger - %msg%n</pattern></encoder>
</appender>
<root level="warn">
<appender-ref ref="STDOUT" />
</root>
</configuration>Niveaus per pakket
Voeg een element <logger> toe om het niveau voor een pakket te overschrijven. Zo kun je DEBUG voor je eigen code inschakelen terwijl bibliotheken stil blijven.
<configuration>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder><pattern>%-5level %logger - %msg%n</pattern></encoder>
</appender>
<logger name="com.example.app" level="debug" />
<root level="info">
<appender-ref ref="STDOUT" />
</root>
</configuration>Een roterende bestands-appender
In productie schrijf je meestal naar bestanden die dagelijks of op basis van hun grootte doordraaien, zodat logboeken niet onbeperkt groeien.
RollingFileAppender met een tijdgebaseerd beleid maakt één bestand per dag en bewaart een begrensde geschiedenis.
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>logs/app.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>logs/app.%d{yyyy-MM-dd}.log</fileNamePattern>
<maxHistory>30</maxHistory>
</rollingPolicy>
<encoder>
<pattern>%d %-5level [%thread] %logger{36} - %msg%n</pattern>
</encoder>
</appender>Meerdere appenders tegelijk
De rootlogger kan naar meerdere appenders verwijzen, zodat logboeken gelijktijdig naar zowel de console als een bestand gaan.
<configuration>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder><pattern>%-5level %msg%n</pattern></encoder>
</appender>
<appender name="FILE" class="ch.qos.logback.core.FileAppender">
<file>logs/app.log</file>
<encoder><pattern>%d %-5level %msg%n</pattern></encoder>
</appender>
<root level="info">
<appender-ref ref="STDOUT" />
<appender-ref ref="FILE" />
</root>
</configuration>De MDC afdrukken
Voeg %X{key} aan het patroon toe om MDC-context, zoals een aanvraag-ID, op elke regel op te nemen.
Elke waarde die je in de MDC zet, verschijnt dan automatisch.
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.slf4j.MDC;
public class Main {
private static final Logger log = LoggerFactory.getLogger(Main.class);
public static void main(String[] args) {
MDC.put("requestId", "req-1234");
// Pattern: %X{requestId} %-5level %msg%n
log.info("handled");
MDC.clear();
}
}Additiviteit
Standaard gaan de gebeurtenissen van een logger ook naar de appenders van bovenliggende loggers. Dit heet additiviteit.
Als een pakketlogger een eigen appender heeft en je dubbele uitvoer wilt voorkomen, stel je daarop additivity="false" in.
<configuration>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder><pattern>%-5level %logger - %msg%n</pattern></encoder>
</appender>
<logger name="com.example.audit" level="info" additivity="false">
<appender-ref ref="STDOUT" />
</logger>
<root level="warn">
<appender-ref ref="STDOUT" />
</root>
</configuration>Automatisch opnieuw laden en variabelen
Logback kan de configuratie periodiek opnieuw laden met <configuration scan="true">. Dat is nuttig om niveaus te wijzigen zonder opnieuw op te starten.
Je kunt ook eigenschappen lezen, zoals een logboekmap, met tijdelijke aanduidingen zoals ${LOG_DIR}.
<configuration scan="true" scanPeriod="30 seconds">
<property name="LOG_DIR" value="logs" />
<appender name="FILE" class="ch.qos.logback.core.FileAppender">
<file>${LOG_DIR}/app.log</file>
<encoder><pattern>%d %-5level %msg%n</pattern></encoder>
</appender>
<root level="info"><appender-ref ref="FILE" /></root>
</configuration>Korte controle
Controleer je kennis van de configuratie van Logback.
Samenvatting
Je hebt geleerd hoe je Logback configureert:
- De configuratie staat in
logback.xmlmet loggers, appenders en encoders. - Patronen maken regels op met
%d,%level,%msgen%X{}. - RollingFileAppender roteert logboeken; stel niveaus per pakket in en configureer additiviteit.
- Schakel
scanin voor herconfiguratie tijdens uitvoering.
Je hebt de cursus over logboekregistratie afgerond.
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class Main {
private static final Logger log = LoggerFactory.getLogger(Main.class);
public static void main(String[] args) {
log.info("Logback configuration course complete");
}
}Leer Java met een AI-tutor — gratis
Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.
- Cursussen
- 104
- Lessen
- 374
Veelgestelde vragen
Is de les “Logback configureren” gratis?
Ja — de volledige tekst van “Logback configureren” kun je hier gratis op het web lezen. Als je interactief wilt oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is, en de rest van de cursus Java Academy wilt ontgrendelen, kun je upgraden naar CoddyKit PRO. De cursus Java Academy bevat in totaal 4 lessen.
Wat leer ik in “Logback configureren”?
Appenders, patronen en niveaus Je oefent met Java Academy door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.
Heb ik ervaring nodig om met Java Academy te beginnen?
Ervaring vooraf is niet nodig. Java Academy op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 4 van 4.
Hoe lang duurt de les “Logback configureren”?
De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.
Kan ik code schrijven en uitvoeren in deze les over Java Academy?
Ja. Elke les over Java Academy bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.
Alle lessen in deze cursus
- Waarom structured logging
- SLF4J-facade en loggers
- Logging met parameters
- Logback configureren