Spring Boot 2.1.2: как передать значения из application.properties в log4j2.xml?

В основном я хочу динамически передавать путь к папке журнала. (Требование состоит в том, чтобы передать путь к папке журнала из командной строки в качестве аргументов, когда я запускаю загрузочную банку spring). Ниже приведен мой файл log4j2.xml для справки.

<?xml version = "1.0" encoding = "UTF-8"?>
<Configuration status = "INFO" monitorInterval = "30">
    <Properties>
        <Property name = "LOG_PATTERN">%d{yyyy-MM-dd'T'HH:mm:ss.SSSZ} %p %m%n</Property>
        <Property name = "APP_LOG_ROOT">logs</Property>
    </Properties>
    <Appenders>
        <Console name = "Console" follow = "true" target = "SYSTEM_OUT">
            <PatternLayout pattern = "${LOG_PATTERN}" />
        </Console> 
        <RollingFile name = "appLog"
            fileName = "${APP_LOG_ROOT}/application.log"
            filePattern = "${APP_LOG_ROOT}/application-%d{yyyy-MM-dd}-%i.log">
            <PatternLayout pattern = "${LOG_PATTERN}" />
            <Policies>
                <SizeBasedTriggeringPolicy size = "20KB" />
            </Policies>
            <DefaultRolloverStrategy max = "10" />
        </RollingFile>
    </Appenders>
    <Loggers>
         <Logger name = "com.test" additivity = "false" level = "ERROR">
            <AppenderRef ref = "Console" />
        </Logger> 
        <Logger name = "com.test" additivity = "false" level = "ALL">
            <AppenderRef ref = "appLog" />
        </Logger>
        <Root level = "ALL">
             <AppenderRef ref = "appLog" />
        </Root>
    </Loggers>
</Configuration>
2
0
1 333
1

Ответы 1

Командная строка: Вы можете передавать значения с -D и с именем переменной.

mvn spring-boot:run -DAPP_LOG_ROOT=/somepath/

вы можете найти более подробную информацию здесь https://maven.apache.org/ref/3.6.0/maven-embedder/cli.html

и не забудьте изменить свой xml. Я не тестировал ниже, но вы можете понять.

<Property name = "APP_LOG_ROOT">${APP_LOG_ROOT:${APP_LOG_ROOT:./logs}}</Property>

приложение: свойства: пока ваш xml принимает APP_LOG_ROOT, как указано выше. наверное просто добавляю

APP_LOG_ROOT=/sompath

будет достаточно.

Кажется, это не работает для меня: <Property name = "APP_LOG_ROOT">${APP_LOG_ROOT:${APP_LOG_ROOT:-logs}}</P‌​roperty>. Однако ниже работает <Property name = "APP_LOG_ROOT" value = "${sys:APP_LOG_ROOT:-logs}" />

Sachin KB 09.02.2019 14:12

Другие вопросы по теме