2015-10-17 111 views
0

嗨我想在我的Spring Boot應用程序中使用DBAppender。我想從application.properties文件中檢索數據庫連接屬性。但它似乎並不認可它們。請注意,我正在使用Spring Boot 1.2.x,所以我現在還不能使用logback-spring.xmlSpring Boot Logback DB Appender屬性

我使用的配置如下:

<appender name="DB" class="ch.qos.logback.classic.db.DBAppender"> 
     <connectionSource class="ch.qos.logback.core.db.DriverManagerConnectionSource"> 

      <driverClass>${spring.datasource.driver-class-name}</driverClass> 
      <url>${spring.datasource.url}</url> 
      <user>${spring.datasource.username}</user> 
      <password>${spring.datasource.password}</password> 
     </connectionSource> 
    </appender> 
+0

這將永遠不會工作。 Logback對彈簧一無所知,反之亦然。替換屬性只適用於spring管理的bean,logback配置不是spring管理的,所以你不能做那樣的事情。 –

回答

3

偶然發現了這一點的同時尋找一個類似的解決方案。因爲這仍然沒有答案,所以我發現了幾種方法:

1)如果你使用的是Spring Boot 1.3+(你已經指出你不是但是爲了將來的參考),我設法使用了<springProperty>標記可重用application.properties中的相同值。

application.properties(用於嵌入式H2 DB):

spring.datasource.driverClassName=org.h2.Driver 
spring.datasource.url=jdbc:h2:mem:testdb 
spring.datasource.username=sa 
spring.datasource.password= 

的logback-spring.xml:

<springProperty name="spring.datasource.driverClassName" source="spring.datasource.driverClassName"/> 
<springProperty name="spring.datasource.url" source="spring.datasource.url"/> 
<springProperty name="spring.datasource.username" source="spring.datasource.username"/> 
<springProperty name="spring.datasource.password" source="spring.datasource.password"/> 

<appender name="DB" class="ch.qos.logback.classic.db.DBAppender"> 
    <connectionSource class="ch.qos.logback.core.db.DriverManagerConnectionSource"> 
     <driverClass>${spring.datasource.driverClassName}</driverClass> 
     <url>${spring.datasource.url}</url> 
     <user>${spring.datasource.username}</user> 
     <password>${spring.datasource.password}</password> 
    </connectionSource> 
</appender> 

2)導入應用程序屬性屬性source:Unable to use Spring Property Placeholders in logback.xml

<property resource="application.properties" /> 

3)也許你能夠在容器JNDI中註冊數據源並使用logback'而不是JNDIConnectionSource?看看這個其他帖子:How to create JNDI context in Spring Boot with Embedded Tomcat Container