Eigenen Logger für ein Paket definieren

Hier finden Sie ein Beispiel dafür, wie Sie für ein Package das Logging in ein separates Logfile einstellen. Das Package org.springframework.webflow soll auf dem Loglevel DEBUG in die Datei idp-webflow.log schreiben.

./conf/logback.xml
    ...
    <!-- Spring Webflow log. -->
    <!-- Definition einer Variablen, die unten benutzt werden kann. Hier wird das tatsächlich verwendete Loglevel eingestellt. -->
    <variable name="idp.loglevel.springwebflow" value="DEBUG" />
 
    <!-- Der "logger" definiert, was geloggt wird. Am Ende wird das Standard-Loglevel festgelegt. -->
    <logger name="org.springframework.webflow" level="${idp.loglevel.springwebflow:-DEBUG}" />
 
    <!-- Der "appender definiert, wohin geloggt wird. -->
    <appender name="IDP_WEBFLOW" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <File>${idp.logfiles}/idp-webflow.log</File>
        <!-- Anpassung der Logrotation -->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${idp.logfiles}/idp-webflow-%d{yyyy-MM-dd}.log.gz</fileNamePattern>
            <maxHistory>${idp.loghistory:-7}</maxHistory>
        </rollingPolicy>
 
        <!-- Zusammensetzung der Logzeile mit Datum und Loglevel am Anfang -->
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <charset>UTF-8</charset>
            <Pattern>%date{ISO8601} - %level [%logger:%line] - %msg%n%ex{short}</Pattern>
        </encoder>
    </appender>
 
    <!-- Aktivieren des neuen Appenders -->
    <root level="${idp.loglevel.root:-INFO}">
        ...
        <appender-ref ref="${idp.webflow.appender:-IDP_WEBFLOW}" />
    </root>

Für das neu erstellte Logfile kann konfiguriert werden, ob die Meldungen auch noch im idp-process.log landen sollen, oder ob sie nur in die neue Datei geschrieben werden sollen. Der entsprechende Parameter heißt „additivity“.

./conf/logback.xml
<!-- additivity auf true setzen, um in idp-process.log und in idp-webflow.log zu schreiben (Standardverhalten) -->
<logger name="org.springframework.webflow" level="${idp.loglevel.springwebflow:-DEBUG}" additivity="true" />
<!-- additivity auf false setzen, um nur in idp-webflow.log zu schreiben -->
<logger name="org.springframework.webflow" level="${idp.loglevel.springwebflow:-DEBUG}" additivity="false" />