当前位置: 首页 > 知识库问答 >
问题:

Spring Boot Logback DB Appender属性

尹小云
2023-03-14

嗨,我想在Spring Boot应用程序中使用dbappender。我想从application.properties文件检索数据库连接属性。然而,它似乎并不认识它们。请记住,我使用的是Spring Boot1.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>

共有1个答案

扈昀
2023-03-14

在寻找类似的解决方案时偶然发现了这一点。由于这个问题仍然没有答案,我找到了以下几种方法:

1)如果您使用的是Spring Boot 1.3+(您已经指出您不是,但供将来参考),我设法使用 标记重用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)将应用程序属性导入为属性源:无法在logback.xml中使用Spring属性占位符

<property resource="application.properties" />

3)也许您能够将数据源注册到容器JNDI中,并使用Logback的JNDIConnectionSource来代替?请查看这篇文章:如何在Spring Boot with Embedded Tomcat container中创建JNDI上下文

 类似资料:
  • 问题内容: 是HTML的属性吗? 我应该做还是 我读了很多文章,但仍然感到困惑。 有人可以向我解释一下HTML / JS中的属性与属性之间的区别是非常简单的吗? 问题答案: 属性由HTML定义。属性(在DOM元素上)由DOM(以及HTML 5定义,模糊了标记和DOM之间的边界)。 一些HTML属性具有1:1映射到属性。就是这样的一个例子。 有时名称是不同的。该属性映射到该属性,该属性映射到该属性(

  • 本文向大家介绍innerHTML属性,outerHTML属性,textContent属性,innerText属性区别详解,包括了innerHTML属性,outerHTML属性,textContent属性,innerText属性区别详解的使用技巧和注意事项,需要的朋友参考一下 innerHTML属性用来读取或设置某个节点内的HTML代码。 outerHTML属性用来读取或设置HTML代码时,会把节点

  • 属性与Java中的字段是相同的,但是更加强大。属性做的事情是字段加上getter加上setter。我们通过一个例子来比较他们的不同之处。这是Java中字段安全访问和修改所需要的代码: public class Person { private String name; public String getName() { return name; }

  • 本文重要内容 CSS的单位 字体属性 文本属性 定位属性:position、float、overflow等 CSS的单位 html中的单位只有一种,那就是像素px,所以单位是可以省略的,但是在CSS中不一样。CSS中的单位是必须要写的,因为它没有默认单位。 绝对单位: 1 in=2.54cm=25.4mm=72pt=6pc。 各种单位的含义: in:英寸Inches (1 英寸 = 2.54 厘米

  • 属性是应用于某些模块、crate 或项的元数据(metadata)。这元数据可以用来: 代码的条件编译 设置 crate 名称、版本和类型(二进制文件或库) 禁用 lint (警告) 启用编译器的特性(宏、全局导入(glob import))等] 链接到一个非 Rust 语言的库 标记函数作为单元测试(unit test) 标记作为基准某个部分的函数 当属性用于一个完整的 crate 时,它们的语

  • 部署在WebSphere服务器上的应用程序可以更改某些JVM属性(例如时区)。此类更改会影响该服务器上的所有应用程序。有没有一种方法可以防止应用程序在运行时更改JVM属性。我想知道我们是否可以在WebSphere服务器中设置一些属性,这样可以防止应用程序在运行时更改JVM上的任何内容。这就像让JVM属性由IBMWebSphere服务器控制,而不是在其上部署应用程序。

  • 属性 我们已经详细讲述了Subversion存储和检索版本库中不同版本的文件和目录的细节,并且用了好几个章节来论述这个工具的基本功能。如果对于版本化的支持到此为止,从版本控制的角度来看Subversion已经完整了。 但不仅仅如此。 作为目录和文件版本化的补充,Subversion提供了对每一个版本化的目录和文件添加、修改和删除版本化的元数据的接口,我们用属性来表示这些元数据。我们可以认为它们是一

  • 属性可以将值与特定的类、结构体或者是枚举联系起来。存储属性会存储常量或变量作为实例的一部分,反之计算属性会计算(而不是存储)值。计算属性可以由类、结构体和枚举定义。存储属性只能由类和结构体定义。 存储属性和计算属性通常和特定类型的实例相关联。总之,属性也可以与类型本身相关联。这种属性就是所谓的类型属性。 另外,你也可以定义属性观察器来检查属性中值的变化,这样你就可以用自定义的行为来响应。属性观察器