значение logback из web.xml - PullRequest
       8

значение logback из web.xml

0 голосов
/ 22 ноября 2018

Я пытаюсь получить значение из весеннего профиля, установленного в web.xml.Я уже сталкивался с вопросом , который решает мою проблему, но реализация решения проблемы, похоже, не работает.Вот мой исходный код:

web.xml:

<context-param>
    <param-name>spring.profiles.default</param-name>
    <param-value>local-jboss</param-value>
</context-param>

logback.xml:

<insertFromJNDI env-entry-name="java:comp/env/spring.profiles.default" as="spring.profiles.default" />

<appender name="STASH" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
    <destination>x.x.x.x:yyyy</destination>
    <encoder class="net.logstash.logback.encoder.LoggingEventCompositeJsonEncoder">
        <providers>
            <mdc /> <!-- MDC variables on the Thread will be written as JSON fields -->
            <context /> <!-- Outputs entries from logback's context -->
            <version /> <!-- Logstash json format version, the @version field in the output -->
            <logLevel />
            <loggerName />
            <pattern>
                <pattern>
                {
                    "APP": "MyApp",
                    "PROFILE": "${spring.profiles.default}"
                }
                </pattern>
            </pattern>
            <threadName />
            <message />
            <logstashMarkers /> <!-- Useful so we can add extra information for specific log lines as Markers -->
            <arguments /> <!-- or through StructuredArguments -->
            <stackTrace />
        </providers>
    </encoder>
</appender>

Кто-нибудь знает, как я получаю значение из моей сети.XML и положить в logback.xml?

1 Ответ

0 голосов
/ 23 ноября 2018

1-е решение:

Если вы используете Spring 3.1+, то эти контекстные параметры будут доступны как переменная env, и при входе в систему вы можете легко ссылаться на них, как показано ниже:

<springProperty scope="context" name="fluentHost" source="myapp.fluentd.host"
        defaultValue="localhost"/>

source - это имя вашего ключа.Далее Документация .

2-е решение: Вы также можете использовать это, когда мы определим context-param как свойство spring, а затем при регистрации вернемся к тому же 1-му решению, приведенному выше.

@SpringBootApplication
class DemoApp extends SpringBootServletInitializer {
    private ServletContext servletContext;
    public static void main(String[] args){SpringApplication.run(DemoApp.class,args);}
    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
        builder = builder.properties("test.property:" + servletContext.getInitParameter("test.property"));
        return builder.sources(DemoApp.class);
    }
    @Override
    public void onStartup(ServletContext servletContext) throws ServletException {
        this.servletContext = servletContext;
        super.onStartup(servletContext);
    }
}

Надеюсь, это поможет.

...