Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在HyperSQL数据库引擎的JDBC驱动程序中使用java.util.logging_Java_Jdbc_Hsqldb_Java.util.logging - Fatal编程技术网

在HyperSQL数据库引擎的JDBC驱动程序中使用java.util.logging

在HyperSQL数据库引擎的JDBC驱动程序中使用java.util.logging,java,jdbc,hsqldb,java.util.logging,Java,Jdbc,Hsqldb,Java.util.logging,在搜索了我的问题和java.util.logging包的答案后,我找到了问题所在,希望在这里分享我的解决方案。我将此作为一个新问题发布,以(希望)给出实际问题的简明陈述(在我之前的问题中,这并不完全清楚,因为我提出了错误的问题),并给出(希望)明确的答案 以下代码说明了该问题: package jdbcloggingsscce; import java.io.IOException; import java.sql.Connection; import java.sql.DriverManag

在搜索了我的问题和java.util.logging包的答案后,我找到了问题所在,希望在这里分享我的解决方案。我将此作为一个新问题发布,以(希望)给出实际问题的简明陈述(在我之前的问题中,这并不完全清楚,因为我提出了错误的问题),并给出(希望)明确的答案

以下代码说明了该问题:

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";
}

本例使用JDBC驱动程序来实现。问题是第一条日志消息(“Starting JDBCLoggingsCCE”)已被记录,但第二条消息(“JDBC Connection created”)未被记录。

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

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