我在 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/