如何将hibernate连接信息发送到logback

时间:2016-12-12 05:26:25

标签: logback

我想在logback文件中获取hibernate conncection信息(如driver_class,url,username,password)。 (不是手动)

以下是我的回溯文件。

<appender name="dbAppender" class="ch.qos.logback.classic.db.DBAppender">
        <append>false</append>  //unfortunately it does not work.
        <connectionSource class="ch.qos.logback.core.db.DriverManagerConnectionSource">
            <driverClass>oracle.jdbc.driver.OracleDriver</driverClass>
            <url>jdbc:oracle:thin:@localhost:1521:aaa</url>
            <user>bbb</user>
            <password>ccc</password>
        </connectionSource>
    </appender>

有效。但我想在logback.xml中自动从hibernate.cfg.xml获取有关连接信息的信息(如驱动程序类,url,用户,密码)。

您的合作将不胜感激。

请帮助。

感谢。

1 个答案:

答案 0 :(得分:0)

hibernate.cfg.xml中获取值可能需要编写一些代码。但是,如果您将属性文件中的所有hibernate属性外部化,则可以import them into your logback configuration

Hibernate支持在类路径的根目录中使用名为hibernate.properties的属性文件,或者在配置会话工厂时可以将java.util.Properties的实例传递给Configuration.setProperties()

如果你可以将你的hibernate属性放到属性文件中,你可以从logback中使用它,如下所示:

类路径上的

属性文件

<configuration>
  <property resource="hibernate.properties" />

  <appender name="dbAppender" class="ch.qos.logback.classic.db.DBAppender">
    <append>false</append>  //unfortunately it does not work.
    <connectionSource class="ch.qos.logback.core.db.DriverManagerConnectionSource">
        <driverClass>${hibernate.connection.driver_class}</driverClass>
        <url>${hibernate.connection.url}</url>
        <user>${hibernate.connection.username}</user>
        <password>${hibernate.connection.password}</password>
    </connectionSource>
  </appender>
</configuration>

如果您的属性不在类路径中,则可以改为使用<property file="path/to/some.properties" />