1

在为 Logback appender 指定实现类时是否可以使用变量替换?例如,

<appender name="LOGFILE" class="${LOGFILE_APPENDER_CLASS}">

当如上所述指定时,Logback 似乎尝试加载名称为“${LOGFILE_APPENDER_CLASS}”的类。即,不执行变量替换!

21:17:11,331 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - About to instantiate appender of type [${LOGFILE_APPENDER_CLASS}] 21:17:11,333 |-ERROR in ch.qos.logback.core.joran.action.AppenderAction - Could not create an Appender of type [${LOGFILE_APPENDER_CLASS}]. ch.qos.logback.core.util.DynamicClassLoadingException: Failed to instantiate type ${LOGFILE_APPENDER_CLASS} at ch.qos.logback.core.util.DynamicClassLoadingException: Failed to instantiate type ${LOGFILE_APPENDER_CLASS}

我想将输出发送到 Eclipse 开发人员的生产和控制台中的文件。如果可能,我不想复制 appender 配置,因为它包含一长串过滤器,在大多数情况下都是相同的。

4

1 回答 1

0

根据问题,所有证据都表明 LogBack 在这种情况下不会执行变量替换。

采用的解决方案是从 XML 配置文件切换到 Groovy 配置文件。然后根据从环境中派生的“bDeveloper”变量动态控制附加程序列表。

def bDeveloper = ["","true"].contains("${System.getProperty("developer")}".toLowerCase())
if (bDeveloper) {
    scan("15 seconds")
    lstRootAppenders.add("BEAGLE")
    oLogfileAppender = ch.qos.logback.core.ConsoleAppender
}
于 2013-06-13T06:57:23.550 回答