2015-10-17 2 views
0

Привет, я хочу использовать DBAppender в моем приложении Spring Boot. Я хочу получить свойства подключения к базе данных из файла application.properties. Однако, похоже, они не распознают их. Имейте в виду, что я использую Spring Boot 1.2.x, поэтому пока не могу использовать logback-spring.xml.Spring Boot Log 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 ничего не знает о весне и наоборот. Замена свойств будет работать только на весенних управляемых бобах, конфигурация журнала не управляется весной, поэтому вы не можете так поступать. –

ответ

3

Наткнулся на это время поиска подобного решения. Поскольку это еще не ответило, вот несколько подходов, которые я нашел:

1) Если вы используете Spring Boot 1.3+ (о котором вы уже указали, но не для справки в будущем), мне удалось использовать <springProperty> тег для повторного использования одних и тех же значений из application.properties.

application.properties (для встроенного H2 БД):

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) свойства Импорт приложений в качестве источника собственности: Unable to use Spring Property Placeholders in logback.xml

<property resource="application.properties" /> 

3) Возможно, вы можете зарегистрировать источник данных в контейнере JNDI и использовать logback ' s JNDIConnectionSource вместо этого? Отъезд этот другой пост: How to create JNDI context in Spring Boot with Embedded Tomcat Container

Смежные вопросы