log4j2 xml 无法识别程序参数

log4j2 xml does not recognize program arguments

我有一个 java spring 应用程序,我想将我的程序参数之一传递给 log4j2.xml 文件

我用那个命令启动它:

nohup java -DremoteMapIp=120.0.1 -Dserver.port=9013 -Dspring.profiles.active=tt-test -jar ttsis-rows.jar

在我的 tt-test.yaml 文件中,我将日志记录配置为:

logging:
  config: classpath:fileAppender.xml

和我的fileAppender.xml文件

<configuration>
    <appender name="FILE"
              class="ch.qos.logback.core.rolling.RollingFileAppender">
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level - %msg%n</pattern>
        </encoder>
        <file>logs/ttsis-rows-${sys:server.port:-noPort}.log</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
            <cleanHistoryOnStart>false</cleanHistoryOnStart>
            <fileNamePattern>ttsis-rows-${sys:server.port:-noPort}.log.%d{yyyy-MM-dd}.%i.gz</fileNamePattern>
            <maxFileSize>20MB</maxFileSize>
            <maxHistory>30</maxHistory>
        </rollingPolicy>
    </appender>

    <root level="INFO">
        <appender-ref ref="FILE"/>
    </root>
</configuration>

我的问题是我的日志文件总是创建为“ttsis-rows-noPort.log”(由 fileAppender.xml 中的文件标记配置)并且 log4j 无法识别程序参数。 知道如何解决这个问题吗?

您可以使用 ${server.port} 而不是 ${sys:server.port:-noPort}