【问题标题】:How to set logback.xml properties in application.yaml如何在 application.yaml 中设置 logback.xml 属性
【发布时间】:2017-07-27 15:43:22
【问题描述】:

我有这样的logback.xml

    <?xml version="1.0" encoding="UTF-8"?>
        <configuration scan="true" scanPeriod="2 seconds">

            <include resource="org/springframework/boot/logging/logback/base.xml"/>
            <jmxConfigurator/>

            <logger name="org.springframework" level="INFO"/>
            <logger name="org.springframework.web.filter.CommonsRequestLoggingFilter" level="DEBUG"/>
            <logger name="com.mypackage" level="WARN"/>

            <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
                <encoder>
                    <pattern>
                        %d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n
                    </pattern>
                </encoder>
            </appender>

            <turboFilter class="ch.qos.logback.classic.turbo.DynamicThresholdFilter">
                <Key>dynamicLogLevel</Key>
                <DefaultThreshold>DEBUG</DefaultThreshold>
                <MDCValueLevelPair>
                    <value>dynamicLogLevelDEBUG</value>
                    <level>DEBUG</level>
                </MDCValueLevelPair>
                <!-- dynamicLogLevelERROR for testing -->
                <MDCValueLevelPair>
                    <value>dynamicLogLevelERROR</value>
                    <level>ERROR</level>
                </MDCValueLevelPair>
            </turboFilter>

 .....
</configuration>

我想在logback.xml 中设置application.yaml 中存在的记录器级别、附加程序、滚动策略。

我已经浏览了这个Doc,但没有找到足够的信息。

我正在使用spring-boot 1.4.4-RELEASE

【问题讨论】:

    标签: spring logging spring-boot yaml logback


    【解决方案1】:

    springProperty 标签可能就是您所需要的。 Spring Boot 会自动过滤配置文件中的source 属性,并将占位符替换为属性中的相应值。

    <configuration scan="true" scanPeriod="2 seconds">
        <springProperty name="yourVar" source="key.of.your.yaml.property"/>
    
        ...${yourVar}...
    

    你可以看到the details in the GitHub repository

    【讨论】:

    • ck@Daniel:我的 logback.xml 和 application.yaml 位于不在类路径中的同一文件夹中...看起来 logback.xml 没有使用 从 application.yaml 中选择值?
    • 为了使用上述解决方案,请确保您已将文件重命名为 logback-spring.xml
    • 遗憾的是即使变量名相同也需要springProperty标签
    【解决方案2】:

    我找到了解决方案: 我在某个文件夹中的application.yaml(比如C:/configuration/application.yamlc:/configuration/logback.xml)。

    logback.xml 中,我们可以使用以下方式访问 application.yaml 内容:

    <property file="${HOME}/configuration/application.yaml"/>
    

    例如:application.yaml

    LOG_FILE : C:/logs
    

    在 logback.xml 中访问它:

    <appender name="MY_APPENDER" class="ch.qos.logback.core.rolling.RollingFileAppender">
            <file>${LOG_FILE}</file>
    
    ...
    
    </appender>
    

    但要注意

    中的值scanPeriod
    <configuration scan="true" scanPeriod="10 seconds">
    

    希望它会有所帮助。

    【讨论】:

      【解决方案3】:
      logging:
        level:
          org.springframework.web: ERROR
          com.pack.test: INFO
        pattern:
          file: "%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n"
        file: <logPath>/test.log
      

      【讨论】:

      • 请在您的答案中添加一些描述。
      猜你喜欢
      • 2019-12-22
      • 2016-12-09
      • 1970-01-01
      • 2019-09-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-03
      • 1970-01-01
      相关资源
      最近更新 更多