java应用程序中的日志记录
我已经创建了一个用于java应用程序的单例记录器。连接到hsql独立数据库之前的所有语句都工作正常,即消息被记录下来。但是连接到数据库之后的日志语句不会被记录。如果我删除了连接语句,或者与数据库的连接失败,那么该连接语句之后的语句将正常工作 为什么会发生这种情况java应用程序中的日志记录,java,logging,hsqldb,Java,Logging,Hsqldb,我已经创建了一个用于java应用程序的单例记录器。连接到hsql独立数据库之前的所有语句都工作正常,即消息被记录下来。但是连接到数据库之后的日志语句不会被记录。如果我删除了连接语句,或者与数据库的连接失败,那么该连接语句之后的语句将正常工作 为什么会发生这种情况 ORLogger.getLogger().log(Level.INFO, "Trying to connect databse . . ."); Class.forName("org.hsqldb.jdbc.JDBCDr
ORLogger.getLogger().log(Level.INFO, "Trying to connect databse . . .");
Class.forName("org.hsqldb.jdbc.JDBCDriver").newInstance();
ORLogger.getLogger().log(Level.INFO, "HSQL driver loaded . . .");
dbConnection = DriverManager.getConnection("jdbc:hsqldb:file:db/db", "username", "password");
ORLogger.getLogger().log(Level.INFO, "Connected to databse.");
在日志文件中,日志消息取决于下面的语句
HSQL driver loaded . . .
但是,在此之后,日志文件中没有添加任何日志消息。
如果删除连接语句,即
dbConnection = DriverManager.getConnection("jdbc:hsqldb:file:db/db", "username", "password");
上述连接语句之后的所有消息都工作正常
和数据库的连接没有问题。所有与数据库相关的工作都很好。除非此日志记录工作不正常。是否使用调试器检查对
DriverManager.getConnection
的调用是否实际返回?听起来好像它在尝试打开连接时遇到了问题,而您不会看到下一行被记录,因为程序在等待打开连接时遇到了问题
检查您的连接字符串,首先尝试使用类似于
jdbc:hsqldb:mem:testdb
的东西,如果这样做有效,可能是hsqldb无法打开您试图用于数据库的文件。如果您使用的是log4J或JDK日志记录,hsqldb将更改设置,除非您有系统属性告诉它不要这样做。请看这里:
你能展示一下你的代码吗?为什么你要使用dbc:hsqldb:file:db/db?看起来你在连接数据库时遇到了问题。另外,您已经实现了自己的记录器也很好,但不要重新发明轮子,使用一个经过验证的记录器,如。谢谢fredt,您的答案非常有用。我只是在想同样的事情。HSql正在以某种方式修改日志记录顺序,但我不知道到底发生了什么。System.getProperties().setProperty(“hsqldb.reconfig_logging”,“false”);解决问题problem@sanjeev:不要忘记对你认为有用的答案进行投票,并接受最能回答你问题的答案(如果存在这样的答案)。