【发布时间】:2014-03-17 17:10:38
【问题描述】:
背景:像往常一样,我们有各种生命周期,例如开发。 stage、lt、prod 所有这些都是在部署时从环境变量 ${lifecycle} 中挑选出来的。 所以我们将 JNDI 设置存储在 ${lifecycle}.properties 中作为变量 datasource.jndi.name=jdbc/xxx。由于其他 bean 也在使用此属性文件,因此已验证此类变量已加载且文件位于类路径中,但不知何故,我无法在 JDBC Appender 下方的 log4j2.xml 中使用此变量。
<JDBC name="DBAppender" tableName="V1_QUERY_LOG" bufferSize="4" ignoreExceptions="false">
<DataSource jndiName="${sys:datasource.jndi.name}" />
<Column name="event_date" isUnicode="false" isEventTimestamp="true" />
<Column name="log_level" isUnicode="false" pattern="%level" />
<Column name="logger" isUnicode="false" pattern="%logger" />
<Column name="message" isUnicode="false" pattern="%message" />
<Column name="exception_msg" isUnicode="false" pattern="%ex{full}" />
</JDBC>
我也尝试过像“${datasource.jndi.name}”这样的选项,或者有什么方法可以让我适应
<Properties>
<Property name="datasource.jndi.name">get datasource.jndi.name from {lifecycle}.properties</property>
</Properties>
【问题讨论】:
-
我不知道它是否默认启用,但也许双重替换会起作用:${bundle:${sys:lifecycle}:datasource.jndi.name}
-
@anttix,试过了,bundle 不能以那种方式工作......
标签: java logging jdbc log4j log4j2