0

您好我正在尝试使用 db 来访问我的 tomcat 应用程序中的日志记录。

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

服务器似乎可以正常启动,但我没有看到表中创建了任何条目。但我可以看到 tomcat 正在获取连接参数(如果我提供无效的连接参数,服务器不会启动)

这是我用于访问日志记录的 server.xml 配置

    <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" />

我正在使用组合模式,并且创建的表具有文档中指定的确切架构 -

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 我知道数据库日志记录有很多故障点,但我的应用程序的主数据库与这个相同。所以故障点是共享的。

4

1 回答 1

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

于 2014-11-24T03:37:16.747 回答