'spring cloud set logging.level does not work in application.yml(I have a logback-spring.xml, too)

these screenshot are my configurations about logback logback-spring.xml

<root level="info">
    <appender-ref ref="FILE"/>
    <appender-ref ref="STDOUT"/>
</root>

application.properties

logging.file.path=./logs
logging.level.cn.hsa=debug
logging.level.root=info
logging.level.org.springframework.web=trace

It’s not working when i change logging.level.root to debug or others in application.properties, it's always use this configure in logback-spring.xml

I read spring source code, logback-srping.xml loaded before application.properties but i dont know why these configures were not override



Solution 1:[1]

You can define something like this if you want to customize:

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

    <springProperty scope="context" name="LOG_PATH" source="app.log.path"
        defaultValue="your_log_path" />

    <timestamp key="dateStamp" datePattern="yyyy-MM-dd" />

    <appender name="consoleAppender" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <Pattern>[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%n
            </Pattern>
        </encoder>
    </appender>

    <springProfile name="test,prod">
        <appender name="Access-FileAppender"
            class="ch.qos.logback.core.rolling.RollingFileAppender">
            <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
                <!-- daily rollover -->
                <fileNamePattern>${LOG_PATH}/logs/xyz.%d{yyyy-MM-dd}.log
                </fileNamePattern>
                <!-- keep 90 days' worth of history -->
                <maxHistory>90</maxHistory>
            </rollingPolicy>
            <encoder>
                <Pattern>[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%n
                </Pattern>
            </encoder>          
        </appender>
        <appender name="Async-Access-FileAppender" class="ch.qos.logback.classic.AsyncAppender">
            <appender-ref ref="Access-FileAppender" />
        </appender>
    </springProfile>

    <root>
        <level value="INFO" />
        <appender-ref ref="consoleAppender" />
    </root>

    <springProfile name="local">
        <logger name="com.xxx.yyy" level="DEBUG" additivity="false">
            <appender-ref ref="consoleAppender" />
        </logger>
    </springProfile>

    <springProfile name="dev">
        <logger name="com.xxx.yyy" level="DEBUG" additivity="false">
            <appender-ref ref="consoleAppender" />
        </logger>
    </springProfile>

    <springProfile name="test,prod">
        <logger name="com.xxx.yyy" level="INFO" additivity="true">
            <appender-ref ref="consoleAppender" />
        </logger>
    </springProfile>
</configuration>

As you can see, test/prod have the similar logging configuration. Similarly, you can configure for local and dev as well. Hope this helps.

Sources

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

Source: Stack Overflow

Solution Source
Solution 1