Spring Boot - 如何为每个配置文件设置不同的日志配置?

时间:2015-06-20 22:15:09

标签: logging configuration spring-boot logback

我正在尝试在Spring Boot中为每个不同的配置文件配置日志记录支持。这是application.yml文件的相关部分:

spring:
    profiles.active: development
---
spring:
    profiles: development
logging.config: logback-development.xml
---
spring:
    profiles: test
logging.config: logback-test.xml

正如您所看到的,我有两个配置文件(开发是默认配置文件),并且我使用Logback作为日志记录框架。两个Logback配置xml文件之间的区别仅在于测试一个是同时记录到控制台和文件。

我遇到的问题是即使我使用开发配置文件也会使用logback-test.xml配置。也许我错过了Spring Boot配置,但是这个配置是否允许我在每个Spring配置文件中使用不同的日志配置?

logback-development.xml内容:

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

<configuration scan="true">
    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <charset>utf-8</charset>
            <Pattern>[%p] %c - %m%n</Pattern>
        </encoder>
    </appender>

    <logger name="rs.rmilovic.bookmarksmanager" level="DEBUG" />

    <contextListener class="ch.qos.logback.classic.jul.LevelChangePropagator">
        <resetJUL>true</resetJUL>
    </contextListener>

    <root level="${logback.loglevel}">
        <appender-ref ref="CONSOLE" />
    </root>
</configuration>

logback-test.xml内容:

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

<configuration scan="true">
    <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>logs/holiday_requets.%d{yyyy-MM-dd}.log</fileNamePattern>
            <maxHistory>90</maxHistory>
        </rollingPolicy>
        <encoder>
            <charset>utf-8</charset>
            <Pattern>%d %-5level [%thread] %logger{0}: %msg%n</Pattern>
        </encoder>
    </appender>

    <appender name="ASYNC" class="ch.qos.logback.classic.AsyncAppender">
        <queueSize>512</queueSize>
        <appender-ref ref="FILE" />
    </appender>

    <logger name="rs.rmilovic.bookmarksmanager" level="INFO" />

    <contextListener class="ch.qos.logback.classic.jul.LevelChangePropagator">
        <resetJUL>true</resetJUL>
    </contextListener>

    <root level="${logback.loglevel}">
        <appender-ref ref="ASYNC" />
    </root>
</configuration>

2 个答案:

答案 0 :(得分:3)

更改logging.config以查找类路径

logging:
  config: classpath:logback-development.xml

答案 1 :(得分:1)

而不是* .yml,在相关的* .properties文件中为配置文件设置它,例如: 在

application-prod.properties
中设置:


    logging.config=classpath:logback-prod.xml