当前位置: 首页 > 知识库问答 >
问题:

回潮泉。无法从application.yml中读取属性值

薛承志
2023-03-14

我的logback-spring.xml从application.properties中读取正常,但从application.yml中读取不正常。在我的项目中,我们被要求仅使用YAML格式,因为该格式正在同一项目中的其他微服务中使用,所以我无法添加属性文件。请帮助我为什么我的application.yml在logback.xml中没有被读取

我尝试了各种方法,并在stackoverflow上搜索了类似的问题,但没有一个问题有正确的答案。请不要将此标记为重复**。

 <?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 resource ="application.yml"/>
        <property name="LOGS" value="./logs" />
        <appender name="Console"
            class="ch.qos.logback.core.ConsoleAppender">
            <layout class="ch.qos.logback.classic.PatternLayout">
                <Pattern>
                    %black(%d{ISO8601}) %highlight(%-5level) [%blue(%t)] %yellow(%C{1.}): %msg%n%throwable
                </Pattern>
            </layout>
        </appender>
    
        <appender name="RollingFile"
            class="ch.qos.logback.core.rolling.RollingFileAppender">
            <file>${LOGS}/${spring.application.name}.log</file>
            <encoder
                class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
                <Pattern>%d %p %C{1.} [%t] %m%n</Pattern>
            </encoder>
    
            <rollingPolicy
                class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
                <!-- rollover daily and when the file reaches 10 MegaBytes -->
                <fileNamePattern>${LOGS}/archived/spring-boot-logger-%d{yyyy-MM-dd}.%i.log
                </fileNamePattern>
                <timeBasedFileNamingAndTriggeringPolicy
                    class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                    <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>
    
    </configuration>

以上是我的logback-spring.xml.请参考以下application.yml:-

spring:
  application:
    name: Logbacking-service

共有1个答案

郭思聪
2023-03-14

您可以在日志文件中使用以下内容,如此处文档中所述

<springProperty name = "appname" source= "spring.application.name"/>

然后在其他地方使用它

<file>${LOGS}/${appname}.log</file>

测试了你使用的确切代码,它确实有问题,所以上面的解决方案应该适用,因为它也适用于我。之前用你的代码生成的日志文件名是“appname_IS_UNDEFINED.log”,然后发布上面的更改,名称是“Logbacking-service.log”。

如果在回拨中为“组织.springframework.core.env.PropertySources属性退层”启用了跟踪日志记录级别,您将看到应用程序.yml 的位置,它从中读取属性。这将帮助您了解Spring启动从何处尝试查找配置。如下所示

Searching for key 'spring.profiles.active' in PropertySource 'applicationConfig: [classpath:/application.yml]
 类似资料:
  • 我对Spring Boot是新手,对Java也比较陌生。我正在使用Spring文档中的Github OAuth2示例应用程序。开箱即用,一切都按预期工作,但是,当我试图将facebook()或github()方法移到一个新类中时,它们无法从src/main/resources/application.yml文件中获取信息。我试过将类放在与主应用程序类相同的包中,也试过将类放在另一个包中。 src/

  • 我是新来的node.js.我正在尝试创建一个注册页面,并使用mysql将输入的值保存在数据库中。 我可以通过在请求头上传递参数来实现这一点。但是,在请求头中传递参数始终不是一个好主意。所以尝试在请求体上传递参数。 我使用邮差测试我的node.js服务。 下面是我的演示应用程序的github链接 https://github.com/debasish283/node_gulp 我还需要做什么来传递请

  • 我试图在Springboot应用程序中使用logback-spring.xml创建日志记录功能,但是无法读取logback-spring.xml文件中的属性值(例如:log.dest.path)。 我通过@PropertySource基于概要文件动态加载不同环境(开发、阶段、生产)的属性文件(YAML)。概要分析工作正常,并且加载了正确的YAML文件(例如:- application.dev.ym

  • 问题内容: 我正在尝试从无头CMS(Sanity.io)返回一些数据,但是我的React一直遇到错误。我已遵循此示例,但是现在出现错误 我的密码 关于我在做什么错的任何想法吗? 问题答案: 渲染组件时,可以将country定义为未定义或为null。确保它在初始渲染时是数组: 或者, 您可以将地图用于这样的国家/地区: 这样可以确保仅在有国家/地区时才运行地图。

  • 我是springboot的新手,我正在尝试从application.properties文件的位置(src/main/resources)读取属性值。但它总是返回NULL。我也需要帮助。附加类和属性文件。请注意:我试过“https://www.baeldung.com/properties-with-spring”如何访问Spring Boot中application.properties文件中定

  • 我的应用程序有存储在applicaion.yml文件中的嵌套属性。 我希望在应用程序启动时将这些属性映射到POJO。 application.yml: 为了实现这一点,我使用了以下注释: @configuration @enableConfigurationProperties @configurationProperties(“demo”) 类演示: 主类 但是我在O/P下面: 步骤1 名称:D