Spring Boot Logback DB Appender属性

Chr*_*Geo 1 java spring logback

嗨,我想DBAppender在我的Spring Boot应用程序中使用A。我想从application.properties文件中检索数据库连接属性。但是,似乎无法识别它们。请记住,我正在使用,Spring Boot 1.2.x因此无法使用logback-spring.xml

我正在使用的配置如下:

<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>
Run Code Online (Sandbox Code Playgroud)

jpt*_*jpt 5

在寻找类似解决方案时偶然发现了这一点。由于这仍然无法解决,因此我找到了以下几种方法:

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=
Run Code Online (Sandbox Code Playgroud)

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>
Run Code Online (Sandbox Code Playgroud)

2)导入应用程序属性作为属性源:无法在logback.xml中使用Spring属性占位符

<property resource="application.properties" />
Run Code Online (Sandbox Code Playgroud)

3)也许您可以在容器JNDI中注册数据源并改用logback的JNDIConnectionSource?看看其他文章:如何在Spring Boot中使用嵌入式Tomcat容器创建JNDI上下文