使用变量替换为Logback Appender类属性

时间:2012-12-13 10:25:08

标签: logback

在为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配置,因为它包含一长串过滤器,在大多数情况下它们都是相同的。

1 个答案:

答案 0 :(得分:0)

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

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

def bDeveloper = ["","true"].contains("${System.getProperty("developer")}".toLowerCase())
if (bDeveloper) {
    scan("15 seconds")
    lstRootAppenders.add("BEAGLE")
    oLogfileAppender = ch.qos.logback.core.ConsoleAppender
}