簡體   English   中英

Spring Boot 2.1.2:如何將值從application.properties傳遞到log4j2.xml?

[英]Spring Boot 2.1.2 : How to pass values from application.properties to log4j2.xml?

基本上,我想動態傳遞日志文件夾路徑。 (要求是在運行spring boot jar時從命令行將日志文件夾路徑作為參數傳遞)。 以下是我的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>

命令行:可以使用-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>

application:properties:只要您的xml接受上述APP_LOG_ROOT。 可能只是添加

APP_LOG_ROOT=/sompath

足夠了。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM