Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Logging Spring Boot-如何在每个配置文件中有不同的日志配置?_Logging_Configuration_Spring Boot_Logback - Fatal编程技术网

Logging Spring Boot-如何在每个配置文件中有不同的日志配置?

Logging Spring Boot-如何在每个配置文件中有不同的日志配置?,logging,configuration,spring-boot,logback,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 正如您所看到

我试图在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引导配置,但是这个配置不应该允许我在每个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>
<?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>

utf-8
[%p]%c-%m%n
真的
logback-test.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>
<?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>

日志/假日需求。%d{yyyy-MM-dd}.log
90
utf-8
%d%-5级[%thread]%记录器{0}:%msg%n
512
真的

更改logging.config,使其在类路径中的外观如下所示

logging:
  config: classpath:logback-development.xml

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

logging.config=classpath:logback-prod.xml
对不起,那没用。它似乎在默认情况下查看类路径,因此不需要“classpath:”前缀。无论如何,谢谢你。你的配置肯定有其他问题。在我的建议之前和之后,我测试了上面的精确配置,它解决了这个问题。我总是在我的项目中成功地使用classpath:*。也许可以发布更多信息。您是使用嵌入式服务器还是部署war?或者在使用嵌入式Tomcat的xmlI中发布日志。您确定没有在运行时覆盖某个配置文件吗?您能在日志输出“激活的配置文件开发”中找到这一行吗?这是我在创建的日志文件中找到的:2015-06-21 02:39:59394调试[main]配置文件应用程序Listener:激活的配置文件开发