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

标签 tomcat logging tomcat7 environment-variables log4j2

我有一个 dekstop 应用程序和一个使用 log4j2 写入日志文件的 tomcat web 应用程序。然后我还有 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>

然而,当我尝试将 log4j2.xml 与 Tomcat webapp 一起使用时,它只是在 文件系统中创建了一个 ${env:FOO} 文件夹 目录。但是,我将 env 替换为 sys 然后 webapp 写入日志文件,但现在当桌面应用程序尝试使用该 log4j2.xmlsys 它在 file-system 目录中创建了一个 ${sys:FOO} 文件夹。为什么会发生这种情况,当我将 sys 与桌面应用程序一起使用时,它找不到环境变量,但 webapp 可以,而当我使用 env 时,webapp 可以'找不到环境变量但桌面应用程序可以?我正在使用 log4j2tomcat 7.0.57RHEL 6.6

最佳答案

你需要做的就是将你要使用的环境变量放在tomcat bin中的seten.sh文件中。执行此操作后,当 tomcat 启动时,它将加载该环境变量,您将能够使用 log4j2.xml 文件中的 env 名称找到该变量。

关于tomcat - 桌面应用程序和 Tomcat Webapp 中的 log4j2.xml sys vs env,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28304779/

相关文章:

java - 记录时 OverlappingFileLockException

tomcat - 如何使用 tomcat 的 catlina api 访问 session 管理

tomcat - 无法使用liferay包启动tomcat服务器

c# - 使用 Serilog 在 WebAPI 2 中记录重要信息

java - 基于 User-Agent 的 Change Velocity 模板

jsp - tomcat 不编译 WEB-INF/libs?

spring-boot - 如何限制运行微服务的spring boot应用创建的数据库连接

java - 使用 tomcat 服务器编辑已部署的应用程序

java - 如果在 Tomcat 7 中禁用了 TRACE、OPTIONS http 方法,如何进行测试

java - 如何配置 tomcat 以使用 log4j 登录不同的文件?