How to pass properties from application.properties to logback config file

怎甘沉沦 提交于 2019-12-05 01:19:46

问题


Overview:

I am using Sentry appender in my logback.xml file and I want to pass plenty of tags as parameters from application.properties file to logback config file.

logback.xml file:

<?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> 

application.properties:

security.ignored=/**

logging.level.root = DEBUG

spring.profiles.active=dev
app.name=retailServices

Note: the spring.profiles.active property in application.properties is mapped to springProfile tag in logback config file.


But the issue is the fact that the "app.name" property cannot be found in logback.xml file. If I use this property as system properties it works but I want to pass it to config file from application.properties.

So any solution, feedback and idea would be highly appreciated.


回答1:


In logback.xml include:

<property resource="application.properties" />

And then you can refer properties in a standard way, for example ${app.name}.




回答2:


I found that Spring has support of next tag <springProperty/> described here . It means that you can easily add variable from property files even this variable value spring resolves from environment/system variable.




回答3:


you can do it now directly via a logback context, or via a third party encoder.

  LoggerContext context = (LoggerContext)LoggerFactory.getILoggerFactory();
  context.putProperty("global", "value");

https://github.com/getsentry/sentry-java/pull/794



来源:https://stackoverflow.com/questions/40497947/how-to-pass-properties-from-application-properties-to-logback-config-file

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!