2012-02-17 114 views
1

我的問題是,我想知道有多少連接打開到oracle數據源池(oracle.jdbc.pool.OracleDataSource)中的oracledb,我想打印這些信息到控制檯使用log4j。 我定義我的游泳池,在Spring配置文件:無法打印到控制檯與log4j

<bean id="dataSource" class="oracle.jdbc.pool.OracleDataSource" > 
    <property name="dataSourceName" value="ds" /> 
    <property name="URL" value="jdbc:oracle:thin:@something" /> 
    <property name="user" value="user" /> 
    <property name="password" value="password" /> 
</bean> 

就像我說的,但我的log4j不打印什麼,我會莫名其妙地掠過我的ojdbc6日誌的信息或ojdbc14罐與log4j的控制檯。 在我的log4j.properties我:

log4j.logger.oracle.jdbc.pool=ALL, jdbc 
log4j.appender.jdbc=org.apache.log4j.ConsoleAppender 
log4j.appender.jdbc.layout=org.apache.log4j.PatternLayout 
log4j.appender.jdbc.layout.ConversionPattern=JDBC | %5p | %d{HH:mm:ss,SSS} > %m - [%l]%n 

我不知道是否有這幾樣在ojdbc束,確定信息的,如果你知道我可以有你是受歡迎的,但我的問題是我看不到任何日誌。也許根本沒有任何日誌...

謝謝你的關注。

+1

你是否通過你的應用初始化log4j配置器? – Venki 2012-02-17 16:35:18

+0

一個好奇的問題。你爲什麼要通過log4j打印? – Venki 2012-02-17 16:36:24

+0

是的,我的log4j完美適用於該項目,也適用於其他包的其他包,例如org.springframework。我使用log4j是因爲我的同事們對我說要使用它。你有另一個想法嗎? – 2012-02-17 16:52:04

回答

0

我找到了答案,只有一些ojdbc包能夠打印日誌。 我有ojdbc6和ojdbc14罐子,他們沒有這個能力。

從這個link

啓用完整日誌記錄功能後,幾乎可以確保所有敏感信息都會顯示在日誌文件中。這是記錄功能的固有功能。但是,只有某些JDBC JAR文件包含JDBC日誌記錄功能。下面的JAR文件包括完整的記錄,不應在敏感的環境中使用:

ojdbc5_g.jar 

ojdbc5dms_g.jar 

ojdbc6_g.jar 

ojdbc6dms_g.jar 

以下JAR文件包括森林採伐限額的能力:

ojdbc5dms.jar 

ojdbc6dms.jar 

我做:P

0

有沒有保證oracle使用log4j,你應該嘗試配置java util logging設置。這link似乎暗示oracle使用java util記錄。或者,您可以構建代理類或擴展此類,並在委派回到oracle連接池之前/之後編寫自己的log4j消息。

+0

感謝您的回答,但我找到了解決方案:D – 2012-02-20 10:44:51

0

選中此page以初始化配置程序。如果你沒有正確初始化它,log4j不會記錄消息。最重要的是嘗試在使用oracle對象的業務邏輯中使用log.debug,log.warn。 Log4j只是一個日誌庫,可以通過java使用。不知道oracle是否通過它轉儲它。

如果你認爲它不能正常工作,還有其他的跟蹤和日誌記錄工具。我的第一個指針是在您的應用程序中嘗試一個簡單的應用程序,以查看當您在使用前面提到的配置器後運行它們時,控制檯是否獲取log4j消息。

+0

非常感謝您的回答,但我的log4j配置與其他軟件包完美配合(我只是試圖構建一個簡單的應用程序來調用簡單的包,而log4j是好的)像org.springframework一樣,不能和其他包如ojdbcs一起使用。也許只是,正如你所說,ojdbc bundles不會使用log4j打印日誌。 – 2012-02-20 08:00:31