Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在logback.xml中使用Spring应用程序属性_Spring_Spring Boot_Logback_Spring Logback - Fatal编程技术网

如何在logback.xml中使用Spring应用程序属性

如何在logback.xml中使用Spring应用程序属性,spring,spring-boot,logback,spring-logback,Spring,Spring Boot,Logback,Spring Logback,我试图在logback.xml中使用spring属性值 文件application-dev.properties(是我的jar的一部分)包含以下属性: myapp.test.appender-class=ch.qos.logback.core.ConsoleAppender 我在logback.xml中添加了以下内容: <configuration scan="true" debug="true"> <property resource="application-de

我试图在logback.xml中使用spring属性值

文件application-dev.properties(是我的jar的一部分)包含以下属性:

myapp.test.appender-class=ch.qos.logback.core.ConsoleAppender
我在logback.xml中添加了以下内容:

<configuration scan="true" debug="true">
    <property resource="application-dev.properties" />
    <appender name="consoleAppender" class="${myapp.test.appender-class}">

当我的应用程序启动时,出现以下错误:

ch.qos.logback.core.joran.action.AppenderAction中出错-无法 创建类型为[${Appender class}]的Appender。 ch.qos.logback.core.util.DynamicClassLoadingException:未能 实例化类型${myapp.test.appender类}

我做错了什么


注意:我还尝试将logback.xml重命名为logback-spring.xml,但这会产生其他问题。

尝试使用springProperty

<configuration>
    <springProperty name="my_appender" source="myapp.test.appender-class"/>

    <appender name="consoleAppender" class="${my_appender}"/>
</configuration>


根据这位官员的说法

因为标准logback.xml配置文件加载得太早,所以不能在其中使用扩展名。您需要使用logback-spring.xml或定义logging.config属性

为了解决这个问题,Spring提供了标签

该标记允许您公开Spring环境中的属性,以便在Logback中使用。如果您想从Logback配置中的application.properties文件中访问值,那么这样做很有用。该标记的工作方式与Logback的标准标记类似。但是,您可以指定属性的源(来自环境),而不是指定直接值。如果需要将属性存储在本地范围以外的其他位置,可以使用scope属性


${fluentHost}
...

注意:使用springProperty还需要将logback.xml更改为logback-spring.xml。我这样做了,得到了相同的错误:
无法创建类型为[${my_Appender}]的Appender。ch.qos.logback.core.util.DynamicClassLoadingException:未能实例化类型${my_appender}
,logback实现可能不会导出表达式而不是类=。其他属性是否自动创建(如上面示例中的level或remoteHost)?您是对的@Ermintar!该类不接受变量,但其他属性接受。非常奇怪,因为值只是一个字符串。谢谢
<springProperty scope="context" name="fluentHost" source="myapp.fluentd.host" defaultValue="localhost"/>
<appender name="FLUENT" class="ch.qos.logback.more.appenders.DataFluentAppender">
    <remoteHost>${fluentHost}</remoteHost>
    ...
</appender>