当前位置: 首页 > 知识库问答 >
问题:

使用变量替换Logback Appender类属性

梁承恩
2023-03-14

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

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

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

21:17:11,331|-ch.qos.logback.core.joran.action.AppenderAction中的INFO-即将实例化类型为[${LOGFILE_APPENDER_CLASS}]的appender 21:17:11,333|-ch.qos.logback.core.joran.action.AppenderAction中的错误-无法创建类型为[${LOGFILE_APPENDER_CLASS}]的Appender。ch.qos.logback.core.util.DynamicClassLoadingException:无法在ch.qos.logback.core.util.DynamicClassLoadingException实例化类型为${LOGFILE_APPENDER_CLASS}:无法实例化类型为${LOGFILE_APPENDER_CLASS}

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

共有1个答案

糜宜民
2023-03-14

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

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

def bDeveloper = ["","true"].contains("${System.getProperty("developer")}".toLowerCase())
if (bDeveloper) {
    scan("15 seconds")
    lstRootAppenders.add("BEAGLE")
    oLogfileAppender = ch.qos.logback.core.ConsoleAppender
}
 类似资料:
  • 问题内容: 我怎样才能做到这一点? 它将替换为文本。但是我想用变量的内容替换它。 我尝试过 它也不起作用。 问题答案: 您需要使用双引号: 您的单引号可防止将shell变量替换为其内容。

  • 有没有办法做到这一点?

  • 问题内容: 尝试用sed替换字符串时发生奇怪的事情。这有效: 因此,当我手动键入字符串时,它可以工作。但在以下情况下,不会发生替换: 当我回显这两个变量PATTERN和REPLACEMENT时,它们具有正确的值。 我试图用配置目录中所有文件中的替换字符串替换所有出现的模式字符串。 问题答案: 尝试 代替。’引号不会扩展变量。

  • 操作步骤: 菜单栏: Refactor —> Replace Temp with Query...

  • 问题内容: 当前在ES5中,我们许多人在框架中使用以下模式来创建类和类变量,这很方便: 在ES6中,您可以本机创建类,但是没有选择可以使用类变量: 可悲的是,上述方法不起作用,因为类只能包含方法。 我知道我可以在…但我不想“垃圾”我的构造,特别是当我有一个更大的类20-30 +参数。 我在考虑解决该问题的多种方法,但尚未找到任何好的方法。(例如:创建一个处理程序,并传递一个与类分开声明的对象。然后

  • 这就是我现在的代码,我试着放入“\n”、“ ”和“ ”,但都不起作用,现在我放入“\n”只是为了明确我想在哪里换行: 我的返回值放在mappingDocsVariable中,然后用以下代码生成docx文件: