【问题标题】:Using java.util.logging with JDBC drivers for the HyperSQL Database Engine将 java.util.logging 与 HyperSQL 数据库引擎的 JDBC 驱动程序一起使用
【发布时间】:2012-09-03 10:55:57
【问题描述】:

在搜索了我关于 java.util.logging 包的问题Implementing logging in a Java application 和Using the java.util.logging package in a Swing application 的答案后,我已经找到了问题并想在这里分享我的解决方案。我将其作为一个新问题发布(希望)对实际问题做出简明陈述(这在我之前的问题中并不完全清楚,因为我问的是错误的问题)以及(希望)给出明确的答案。

以下代码说明了问题:

package jdbcloggingsscce;

import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.logging.FileHandler;
import java.util.logging.Handler;
import java.util.logging.Level;
import java.util.logging.Logger;
import java.util.logging.SimpleFormatter;

public class JDBCLoggingSSCCE {
    public static void main(String[] args) throws IOException, SQLException {
        JDBCLoggingSSCCE.initLogger();
        Logger logger = Logger.getLogger(JDBCLoggingSSCCE.class.getName());
        logger.log(Level.INFO, "Starting JDBCLoggingSSCCE");

        Connection conn = DriverManager.getConnection(DB_URL);
        logger.log(Level.INFO, "JDBC Connection created");
    }

    private static void initLogger() throws IOException {
        Handler handler = new FileHandler(JDBCLoggingSSCCE.LOG_FILE_NAME);
        handler.setFormatter(new SimpleFormatter());

        Logger logger = Logger.getLogger("");
        logger.setLevel(Level.ALL);
        logger.addHandler(handler);
    }
    private static final String LOG_FILE_NAME = "jdbcloggingsscce.log";
    private static final String DB_URL = "jdbc:hsqldb:file:db/jdbcloggingsscce.db";
}

此示例使用 HyperSQL Database Engine (HSQLDB) 的 JDBC 驱动程序。问题是记录了第一条日志消息(“Starting JDBCLoggingSSCCE”),但没有记录第二条消息(“JDBC Connection created”)。

【问题讨论】:

    标签: java jdbc hsqldb java.util.logging


    【解决方案1】:

    解决方案是将名为“hsqldb.reconfig_logging”的系统属性设置为 false。设置此属性的一种方法是将以下代码行添加到 initLogger() 方法的末尾:

    System.setProperty("hsqldb.reconfig_logging", "false");
    

    我认为,只要在调用 DriverManager.getConnection(DB_URL) 之前,放置位置并不完全重要。设置此“hsqldb.reconfig_logging”属性会告诉 HSQLDB JDBC 驱动程序不重新配置 java.util.logging 包中的 Logger。结果是登录应用程序的其余部分按需要继续。当然,HSQLDB 本身也包含日志消息,但处理这些是另一个问答。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-02-11
      • 2021-02-14
      • 2017-01-23
      • 2013-06-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多