'Quarkus - logback.xml: cannot add jar

Recently I found this Quarkus extension that allows to use logback.xml for configuring the logger (JBoss LogManager is still the implementation).

I've added the required dependencies on my pom.xml

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>io.quarkus</groupId>
            <artifactId>quarkus-bom</artifactId>
            <version>${quarkus.version}</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

# ...

<dependencies>
    # ...
    
    <dependency>
        <groupId>io.quarkiverse.logging.logback</groupId>
        <artifactId>quarkus-logging-logback</artifactId>
    </dependency>

   <dependency>
       <groupId>net.logstash.logback</groupId>
       <artifactId>logstash-logback-encoder</artifactId>
       <version>${logstash.version}</version>
   </dependency>

   <dependency>
       <groupId>org.codehaus.janino</groupId>
       <artifactId>janino</artifactId>
       <version>${janino.version}</version>
   </dependency>

    # ...
</dependencies>

and the logback.xml in src/main/resources, that simply includes the configuration from another xml file inside a dependency

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <include resource="logger.xml" />

</configuration>

But I'm getting this strange warning:

WARN in ch.qos.logback.core.joran.util.ConfigurationWatchListUtil@4b06f969 - Null ConfigurationWatchList. Cannot add jar:file:///C:/Users/dems98/.m2/repository/com/dems98/1.8/test.jar!/logger.xml

and the Quarkus application does not log anything.

the content of logger.xml works if defined directly inside logback.xml

<?xml version="1.0" encoding="UTF-8"?>
<included>

    <conversionRule conversionWord="iso8601nano"
                    converterClass="com.dems98.test.log.converter.Iso8601NanoConverter" />

    <appender name="STDOUT"
              class="ch.qos.logback.core.ConsoleAppender">
        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <level>INFO</level>
        </filter>
        <encoder>
            <pattern>%d{yyyy-MM-dd'T'HH:mm:ss.SSSZ} [%t] %-5level %logger{36} - %.-100000msg%n</pattern>
        </encoder>
    </appender>

    <if condition='"${LOG_DESTINATION:-FILE}".equals("FILE")'>
        <then>
            <appender name="ROLLING_FILE_SPRING_BOOT"
                      class="ch.qos.logback.core.rolling.RollingFileAppender">
                <file>/var/log/server/${NAME}.log</file>
                <rollingPolicy
                        class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
                    <fileNamePattern>/var/log/%d{yyyy-MM-dd_HH, UTC}.${NAME}.server-log.%i.zip</fileNamePattern>
                    <maxFileSize>100MB</maxFileSize>
                    <maxHistory>3</maxHistory>
                    <totalSizeCap>300MB</totalSizeCap>
                </rollingPolicy>
                <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
                    <level>INFO</level>
                </filter>
                <encoder>
                    <pattern>%d{yyyy-MM-dd'T'HH:mm:ss.SSSZ} [%t] %-5level %logger{36} - %.-100000msg%n</pattern>
                </encoder>
            </appender>
        </then>
    </if>

    <if condition='"${LOG_DESTINATION:-FILE}".equals("CONSOLE")'>
        <then>
            <appender name="ROLLING_FILE_APP"
                      class="ch.qos.logback.core.ConsoleAppender">
                <encoder class="net.logstash.logback.encoder.LoggingEventCompositeJsonEncoder">
                    <providers>
                        <pattern>
                            <omitEmptyFields>true</omitEmptyFields>
                            <pattern>
                                {
                                        "timestamp": "%iso8601nano{UTC}",
                                        "correlation-id": "%mdc{correlation-id}",
                                        "message": "%.-100000msg%replace(%n%.-100000ex){'^\\s+$$',''}",
                                        "level": "%level",
                                        "version": "${VERSION}",
                                        "class": "%logger",
                                        "thread": "%t"
                                }
                            </pattern>
                        </pattern>
                    </providers>
                </encoder>
            </appender>
        </then>
        <else>
            <appender name="ROLLING_FILE_APP"
                      class="ch.qos.logback.core.rolling.RollingFileAppender">
                <file>/var/log/${NAME}.log</file>
                <rollingPolicy
                        class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
                    <fileNamePattern>/var/log/%d{yyyy-MM-dd_HH, UTC}.${NAME}.log.%i.zip</fileNamePattern>
                    <maxFileSize>100MB</maxFileSize>
                    <maxHistory>3</maxHistory>
                    <totalSizeCap>300MB</totalSizeCap>
                </rollingPolicy>
                <encoder class="net.logstash.logback.encoder.LoggingEventCompositeJsonEncoder">
                    <providers>
                        <pattern>
                            <omitEmptyFields>true</omitEmptyFields>
                            <pattern>
                                {
                                        "timestamp": "%iso8601nano{UTC}",
                                        "correlation-id": "%mdc{correlation-id}",
                                        "message": "%.-100000msg%replace(%n%.-100000ex){'^\\s+$$',''}",
                                        "level": "%level",
                                        "version": "${VERSION}",
                                        "class": "%logger",
                                        "thread": "%t"
                                }
                            </pattern>
                        </pattern>
                    </providers>
                </encoder>
            </appender>
        </else>
    </if>

    <logger name="com.test" level="${LOG_LEVEL:-INFO}" additivity="false">
        <appender-ref ref="ROLLING_FILE_APP" />
    </logger>

    <root level="DEBUG">
        <appender-ref ref="STDOUT" />
        <if condition='"${LOG_DESTINATION:-FILE}".equals("FILE")'>
            <then>
                <appender-ref ref="ROLLING_FILE_SPRING_BOOT" />
            </then>
        </if>
    </root>
</included>

I've searched for a solution but did not find anything. How can I solve?

Thanks in advance.



Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source