Cod*_*ice 4 java jdbc hsqldb java.util.logging
在搜索了我的问题的答案之后,在Java应用程序中实现登录并在Swing应用程序中使用有关java.util.logging包的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";
}
Run Code Online (Sandbox Code Playgroud)
本示例将JDBC驱动程序用于HyperSQL数据库引擎(HSQLDB)。问题是第一个日志消息(“正在启动JDBCLoggingSSCCE”)已记录,但第二条消息(“已创建JDBC连接”)未记录。
解决方案是将名为“ hsqldb.reconfig_logging”的系统属性设置为false。设置此属性的一种方法是将以下代码行添加到initLogger()方法的末尾:
System.setProperty("hsqldb.reconfig_logging", "false");
Run Code Online (Sandbox Code Playgroud)
我相信,只要在致电到之前,放置位置就不完全重要DriverManager.getConnection(DB_URL)。设置此“ hsqldb.reconfig_logging”属性将指示HSQLDB JDBC驱动程序不要从java.util.logging包中重新配置日志记录器。结果是按需要继续登录应用程序的其余部分。当然,HSQLDB还包括记录消息本身,但是处理消息是另一个问题。
| 归档时间: |
|
| 查看次数: |
1428 次 |
| 最近记录: |