2014-07-23 39 views
0

嗨我想在我的tomcat應用程序中使用數據庫訪問日誌記錄。tomcat 7 jdbc訪問日誌閥不工作

我遵循tomcat文檔。 https://tomcat.apache.org/tomcat-7.0-doc/api/org/apache/catalina/valves/JDBCAccessLogValve.html

服務器似乎啓動正常,但我沒有看到任何在表中創建的條目。 但我看得出來,Tomcat是撿的連接參數(如果我給無效連接參數時,服務器不開機)

這是我訪問日誌記錄

<Valve className="org.apache.catalina.valves.JDBCAccessLogValve" 
      driverName="com.mysql.jdbc.Driver" 
      connectionURL="jdbc:mysql://localhost:3306/test?user=root" 
      pattern="combined" resolveHosts="false" tableName="access" /> 

我的server.xml配置現在用的組合圖案,並創建表具有如文檔中指定的確切模式 -

CREATE TABLE access (
id INT UNSIGNED AUTO_INCREMENT NOT NULL, 
remoteHost CHAR(15) NOT NULL, 
userName CHAR(15), 
timestamp TIMESTAMP NOT NULL, 
virtualHost VARCHAR(64) NOT NULL, 
method VARCHAR(8) NOT NULL, 
query VARCHAR(255) NOT NULL, 
status SMALLINT UNSIGNED NOT NULL, 
bytes INT UNSIGNED NOT NULL, 
referer VARCHAR(128), 
userAgent VARCHAR(128), 
PRIMARY KEY (id), 
INDEX (timestamp), 
INDEX (remoteHost), 
INDEX (virtualHost), 
INDEX (query), 
INDEX (userAgent) 
); 

catalina.out中似乎並沒有記錄到這種情況下有用的任何信息。

PS我明白,數據庫日誌記錄有很多失敗點,但我的應用程序的主數據庫是一樣的這一個。所以失敗點是共享的。

回答

0

您需要將用戶名和密碼定義爲單獨的子元素標記,而不是通過連接url。

像:

<Valve className="org.apache.catalina.valves.JDBCAccessLogValve" 
    driverName="com.mysql.jdbc.Driver" 
    connectionURL="jdbc:mysql://localhost:3306/testdbName" 
    connectionName="root" 
    connectionPassword=""/> 

爲了調試,你可以試試「請求自卸車閥」,看看究竟是怎麼回事。參見:http://tomcat.apache.org/tomcat-7.0-doc/config/filter.html#Request_Dumper_Filter