桌面应用程序和Tomcat Webapp中的log4j2.xml sys vs env

桌面应用程序和Tomcat Webapp中的log4j2.xml sys vs env,tomcat,logging,tomcat7,environment-variables,log4j2,Tomcat,Logging,Tomcat7,Environment Variables,Log4j2,我有一个dekstop应用程序和一个tomcat web应用程序,它们使用log4j2写入日志文件。然后我还有log4j2.xml配置文件。正在写入的文件保存在一个文件夹中,该文件夹作为环境变量存储。因此,log4j2.xml文件如下所示 <?xml version="1.0" encoding="UTF-8"?> <Configuration status="WARN" monitorInterval="30"> <Properties>

我有一个dekstop应用程序和一个tomcat web应用程序,它们使用
log4j2
写入日志文件。然后我还有
log4j2.xml
配置文件。正在写入的文件保存在一个文件夹中,该文件夹作为
环境变量存储。因此,
log4j2.xml
文件如下所示

<?xml version="1.0" encoding="UTF-8"?>

<Configuration status="WARN" monitorInterval="30">

    <Properties>

        <Property name="logdir">${env:FOO}/log</Property>

        <Property name="msgformat">%d{yyyy-MM-dd HH:mm:ss.SSS}{GMT+0} [%t] %-5level %logger{36} - %msg%n</Property>

    </Properties>

    <Appenders>

        <Console name="Console" target="SYSTEM_OUT">

            <PatternLayout pattern="${msgformat}"/>

        </Console>

        <RollingFile name="ERROR_FILE" fileName="${logdir}/error.log"

            filePattern="${logdir}/error-%i.log">

            <PatternLayout pattern="${msgformat}"/>

            <Policies>

                <SizeBasedTriggeringPolicy size="20 MB"/>

            </Policies>

            <DefaultRolloverStrategy max="10"/>

        </RollingFile>

        <RollingFile name="EVENT_FILE" fileName="${logdir}/event.log"

            filePattern="${logdir}/event-%i.log">

            <PatternLayout pattern="${msgformat}"/>

            <Policies>

                <SizeBasedTriggeringPolicy size="20 MB"/>

            </Policies>

            <DefaultRolloverStrategy max="10"/>

        </RollingFile>

    </Appenders>

    <Loggers>

        <Logger name="foo.utils.footest" level="trace"

            additivity="false">

            <AppenderRef ref="Console"/>

        </Logger>       

        <Logger name="foo.foologger" level="trace"

            additivity="false">

            <AppenderRef ref="ERROR_FILE" level="WARN"/>

            <AppenderRef ref="EVENT_FILE" level="TRACE"/>

        </Logger>       

        <Logger name="foo" level="info"

            additivity="false">

            <AppenderRef ref="ERROR_FILE" level="WARN"/>

            <AppenderRef ref="EVENT_FILE" level="TRACE"/>

        </Logger>   

        <Root level="trace">

            <AppenderRef ref="Console" />

        </Root>

    </Loggers>

</Configuration>

${env:FOO}/log
%d{yyyy-MM-dd HH:MM:ss.SSS}{GMT+0}[%t]-5级别%logger{36}-%msg%n

但是,当我尝试将
log4j2.xml
用于Tomcat webapp时,它只是在
文件系统
目录中创建了一个
${env:FOO}
文件夹。然而,我将
env
替换为
sys
,然后webapp写入日志文件,但现在当桌面应用程序尝试使用
log4j2.xml
sys
时,它会在
文件系统
目录中创建一个
${sys:FOO}
文件夹。为什么会发生这种情况,当我使用桌面应用程序时,它找不到环境变量,但Web应用程序可以,当我使用
env
时,Web应用程序找不到环境变量,但桌面应用程序可以?我正在将
log4j2
tomcat 7.0.57
RHEL 6.6
一起使用,您需要做的是将要使用的环境变量放入tomcat bin的
seten.sh
文件中。执行此操作后,当tomcat启动时,它将加载该环境变量,并且您将能够使用
log4j2.xml
文件中的
env
名称找到该变量