如何读取 log4j2 中的 catalina.properties

How to read from catalina.properties in log4j2

我的系统配置是: Tomcat 9.0.14 Windows Java 8 Spring 开机 log4j2

在我的 catalina.properties 中,我定义了以下 属性:

server_log_root=D:/Bharath/Projects/Logs

在我的 log4j2.xml 文件中,我试图按如下方式访问上面的 属性:

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
    <Properties>
        <Property name="LOG_HOME">${sys:server_log_root}</Property>
        <Property name="CONVERSION_PATTERN">%d{yyyy-MM-dd HH:mm:ss,SSS} tId=%X{TRANSACTION_ID} %-5p %C{1}:%L - %m%n</Property>
    </Properties>
    <Appenders>
        <Console name="CONSOLE_APPENDER" target="SYSTEM_OUT">
            <PatternLayout pattern="${CONVERSION_PATTERN}" />
        </Console>

        <File name="API_SERVICES_FILE_APPENDER" fileName="${LOG_HOME}/api_services_log.log">
            <PatternLayout pattern="${CONVERSION_PATTERN}" />
        </File>
    </Appenders>
    <Loggers>
        <Root>
            <AppenderRef ref="CONSOLE_APPENDER" level="debug"/>
        </Root>

        <Logger name="API_SERVICES_FILE_LOGGER" level="debug" additivity="false">
            <AppenderRef ref="API_SERVICES_FILE_APPENDER" />
        </Logger>
    </Loggers>
</Configuration>

根据 运行 我的申请,日志没有在文件夹 (D:/Bharath/Projects/Logs) 中创建。

我尝试将文件夹路径样式从 / 更改为 \,但仍然没有成功。 此外,我尝试使用以下但 none 有效:

$${sys:server_log_root}
${env:server_log_root}
$${env:server_log_root}
${server_log_root}
$${server_log_root}

谁能帮帮我? 提前致谢!

真诚的, 巴拉斯

我通过将 属性 作为环境变量放在 "context.xml" 中解决了这个问题(而不是 catalina.properties)