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