【问题标题】:Use Variable Substitution for Logback Appender Class Attribute对 Logback Appender 类属性使用变量替换
【发布时间】:2012-12-01 05:18:31
【问题描述】:

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

【问题讨论】:

    标签: logback


    【解决方案1】:

    根据问题,所有证据都表明 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
    }
    

    【讨论】:

      猜你喜欢
      • 2016-01-16
      • 2012-04-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-01
      • 1970-01-01
      相关资源
      最近更新 更多