在配置文件中使用web.xml中定义的环境变量

时间:2015-11-16 18:15:13

标签: java web java-ee tomcat

我在war包中的web.xml中定义了一个变量,如:

<env-entry>
        <env-entry-name>LOG_DIR</env-entry-name>
        <env-entry-type>java.lang.String</env-entry-type>
        <env-entry-value>${CATALINA_HOME}</env-entry-value>
</env-entry>

此外,我在classpath中有logback.xml文件。 我想在那里使用这个变量:

<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${LOG_DIR}/logs/WebStore.log</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!-- daily rollover -->
            <fileNamePattern>logFile.%d{yyyy-MM-dd}.log</fileNamePattern>
            <!-- keep 30 days' worth of history -->
            <maxHistory>30</maxHistory>
        </rollingPolicy>

        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss} %-5level [%logger{36}] [%thread] %msg%n</pattern>
        </encoder>
    </appender>

当我启动我的tomcat实例时,我在tomcat bin目录中获得了LOG_DIR_IS_UNDEFINED文件夹。

我知道我可以创建一个属性文件并将其导入到logback.xml中但是我不想再创建一个文件而且我对以这种方式使用变量感兴趣。有可能吗?

1 个答案:

答案 0 :(得分:1)

环境条目可以在配置文件中看到,但通常程序员必须专门设置环境范围。例如 $${env:USER}类似的东西可以在Log4j中使用。 见这里:http://logging.apache.org/log4j/2.x/manual/lookups.html

另见这个答案: How to use system environment variables in log4j.properties?

在logback中可能存在类似的机制,但是我无法通过快速搜索找到一些东西。 如果每个人都发现,欢迎您编辑此答案并添加它。 在特定情况下,您可以直接使用${CATALINA_HOME}内的logback.xml