我正在尝试在logback.xml中使用spring属性值。
文件application-dev.properties(它是我的jar的一部分)包含以下属性:
@Html.DropDownListFor(model => model.RoomId, Model.RoomList, "-- Select Room --", new { @class = "form-control" })
@Html.DropDownListFor(model => model.CustomerId, Model.CustomerList, "-- Select Customer --", new { @class = "form-control" })
,我在logback.xml中添加了以下内容:
myapp.test.appender-class=ch.qos.logback.core.ConsoleAppender
启动我的应用程序时,出现以下错误:
ch.qos.logback.core.joran.action.AppenderAction中的错误-无法 创建类型为[$ {appender-class}]的Appender。 ch.qos.logback.core.util.DynamicClassLoadingException:失败 实例化类型$ {myapp.test.appender-class}
我在做什么错了?
注意:我还尝试将logback.xml重命名为logback-spring.xml,但这会带来其他问题。
答案 0 :(得分:1)
尝试使用springProperty
<configuration>
<springProperty name="my_appender" source="myapp.test.appender-class"/>
<appender name="consoleAppender" class="${my_appender}"/>
</configuration>
答案 1 :(得分:1)
根据官方docs
由于标准logback.xml配置文件加载太早,因此无法在其中使用扩展名。您需要使用logback-spring.xml或定义logging.config属性。
为此,Spring提供了<springProperty>
标签。
标签使您可以从Spring Environment中公开属性,以在Logback中使用。如果要访问Logback配置中的application.properties文件中的值,则这样做很有用。该标签的工作方式类似于Logback的标准标签。但是,不是指定直接值,而是指定属性的来源(来自环境)。如果需要将属性存储在本地范围之外的其他位置,则可以使用scope属性。
<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>