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

标签 java web jakarta-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>

我在类路径中也有 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,但我不想再创建一个文件,而且我对以这种方式使用变量很感兴趣。可能吗?

最佳答案

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

另请参阅此答案: How to use system environment variables in log4j.properties?

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

关于java - 在配置文件中使用 web.xml 中定义的环境变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33745871/

相关文章:

c# - 如何从 VS 2010 发布 Web 服务?

javascript - HTML 中的样式脚本

multithreading - 如何停止/终止/恢复受管执行人服务

Java EE 7 - @Decorator、@Stateless 和@PersistenceContext = nullpointerException

facebook-graph-api - Java HTTP 获取对 facebook 的请求。错误的请求

java - Spring Data jdbc 中的 Map<String, String> 单列映射

java - 列表返回方法返回一个空列表(尽管列表已填充)

java - 如何重新排序列表<String>

java - 为什么 BatchInserterIndex 多个字段的精确查询返回所有节点?

tomcat - 如何给 web 应用程序起一个全世界都可以访问的名字