2012-08-28 72 views
0

我已經創建了一個在我的java應用程序中使用的單例記錄器。連接到hsql獨立數據庫之前的所有語句都正常工作,即消息正在記錄。但連接到數據庫後的日誌語句未被記錄。如果我刪除連接語句或者如果連接到數據庫失敗,那麼連接語句後的語句正常工作。在java應用程序中登錄

爲什麼會發生這種情況?

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

上述連接語句後的所有郵件都運作良好。

與數據庫的連接沒有問題。所有數據庫相關的工作都很好。除此日誌記錄無法正常工作外。

+0

爲什麼會是U使用DBC你展示你的代碼 –

+0

:HSQLDB:文件:的db/db –

+0

看起來你必須與你的數據庫連接問題。此外,你已經實現了自己的記錄器,但不要重新發明輪子,使用像[log4j](http://logging.apache.org/log4j/2.x/)這樣的經過驗證的記錄器。 –

回答

1

如果您正在使用log4J或JDK日誌記錄,HSQLDB將更改設置,除非您有一個系統屬性告訴它不要。在這裏看到:

http://hsqldb.org/doc/2.0/guide/management-chapt.html#mtc_jdc_logging

+0

謝謝fredt,你的回答非常有用。我只是想着同樣的事情。 HSQL以某種方式修改了日誌序列,但我不知道到底發生了什麼。 System.getProperties()。setProperty(「hsqldb.reconfig_logging」,「false」);解決問題 – Sanjeev

+0

@sanjeev:不要忘記提高你認爲有用的答案,並接受最好回答你問題的答案(如果存在這樣的答案)。 – Keppil

0

您是否使用調試器來檢查對DriverManager.getConnection的調用實際返回?聽起來像試圖打開連接時卡住了,你不會看到下一行記錄,因爲程序停滯不前,等待打開連接。

檢查您的連接字符串,首先嚐試使用類似jdbc:hsqldb:mem:testdb的東西,如果可行,可能是因爲hsqldb無法打開您要用於數據庫的文件。