如何将属性从application.properties传递到logback配置文件

sae*_*edj 4 logback sentry spring-boot

概述:

我在我的logback.xml文件中使用Sentry appender,我想将大量标签作为参数从application.properties文件传递到logback配置文件.

logback.xml文件:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <include resource="org/springframework/boot/logging/logback/defaults.xml"/>
    <include resource="org/springframework/boot/logging/logback/file-appender.xml"/>
    <include resource="org/springframework/boot/logging/logback/console-appender.xml"/>

    <appender name="SENTRY" class="com.getsentry.raven.logback.SentryAppender">
        <dsn>
            https://e0a61232c92f42ffa34c22914d676a8e:e64f7edc60de490eb004556d2b3fce45@sentry.io/112817
        </dsn>
        <springProfile name="dev">
            <tags>env:dev,app:${app.name},platform:aws</tags>
        </springProfile>
        <springProfile name="stage">
            <tags>env:dev</tags>
        </springProfile>
        <springProfile name="test">
            <tags>env:test</tags>
        </springProfile>

        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <level>ERROR</level>
        </filter>
    </appender>

    <root level="ERROR">
        <appender-ref ref="CONSOLE"/>
        <appender-ref ref="SENTRY"/>
    </root>

</configuration> 
Run Code Online (Sandbox Code Playgroud)

application.properties:

security.ignored=/**

logging.level.root = DEBUG

spring.profiles.active=dev
app.name=retailServices
Run Code Online (Sandbox Code Playgroud)

注意: application.properties中的spring.profiles.active属性映射到logback配置文件中的springProfile标记.


但问题是在logback.xml文件中找不到"app.name"属性.如果我将此属性用作系统属性,它可以工作,但我想将它从application.properties传递给配置文件.

所以任何解决方案,反馈和想法都将受到高度赞赏.

Mac*_*iak 11

logback.xml包括:

<property resource="application.properties" />
Run Code Online (Sandbox Code Playgroud)

然后,您可以以标准方式引用属性,例如${app.name}.


小智 6

我发现 Spring 支持此处<springProperty/>描述的下一个标签。这意味着您可以轻松地从属性文件添加变量,即使这个变量值 spring 从环境/系统变量解析。