Home > Software engineering >  How to include a custom xml in logback-spring.xml?
How to include a custom xml in logback-spring.xml?

Time:12-23

I have created a common log back-common.xml. I want to use this file in another file - logback.spring.xml. Please help me with how I can use this efficiently.

As of now, the application is starting but logs are not printed in the console, and logs are not populated to log file. Please help. Don't mark this as duplicate, because I have tried almost everything and I have invested 2 days in this. Other questions related to the same do not have a valid answer attached.

logback-spring.xml

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <property resource ="application.yml"/>
    <springProperty name="NAME" source="spring.application.name" />
    <include file="logback-common.xml"/>
</configuration>

logback-common.xml

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <include resource="org/springframework/boot/logging/logback/defaults.xml"/>
    <include resource="org/springframework/boot/logging/logback/base.xml"/>
    <include resource="org/springframework/boot/logging/logback/console-appender.xml"/>
    <property name="LOGS" value="./logs" />
    <appender name="Console"
        >
        <layout >
            <Pattern>
                %black(%d{ISO8601}) %highlight(%-5level) [%blue(%t)] %yellow(%C{1.}): %msg%n%throwable
            </Pattern>
        </layout>
    </appender>

    <appender name="RollingFile"
        >
        <file>${LOGS}/${NAME}.log</file>
        <encoder
            >
            <Pattern>%d %p %C{1.} [%t] %m%n</Pattern>
        </encoder>

        <rollingPolicy
            >
            <!-- rollover daily and when the file reaches 10 MegaBytes -->
            <fileNamePattern>${LOGS}/archived/spring-boot-logger-%d{yyyy-MM-dd}.%i.log
            </fileNamePattern>
            <timeBasedFileNamingAndTriggeringPolicy
                >
                <maxFileSize>10MB</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
        </rollingPolicy>
    </appender>
    
    <!-- LOG everything at INFO level -->
    <root level="info">
        <appender-ref ref="RollingFile" />
        <appender-ref ref="Console" />
    </root>

    <!-- LOG "com.baeldung*" at TRACE level -->
    <logger name="com.ms" level="trace" additivity="false">
        <appender-ref ref="RollingFile" />
        <appender-ref ref="Console" />
    </logger>
    
    <logger name="org.springframework.core.env.PropertySourcesPropertyResolver" level="trace" additivity="true">
    </logger>

</configuration>

application.yml

spring:
  application:
    name: Logbacking-service

enter image description here

CodePudding user response:

You need to use below to "resource" instead of "file" for your child configuration ( as it is present in classpath)

<include resource="logback-common.xml"/>

You would see information printed on console when logback is able to find and load all the configuration file as logback gets bootstrapped at very initial stage.

  • Related