mysql - tomcat 7 jdbc访问日志阀门不工作

标签 mysql jdbc tomcat7 access-log tomcat-valve

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

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

最佳答案

您需要将用户名和密码定义为单独的子元素标记,而不是通过连接 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

关于mysql - tomcat 7 jdbc访问日志阀门不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24901382/

相关文章:

c++ - 使用 MINGW32 在 Debian 上用 C++ 和 MySQL 编译

html - web-app 上下文和 FORM ACTION 属性?

php - 当有人登陆页面时将时间/日期插入数据库

mysql - 动态MySQL查询错误

java - 我正在尝试通过 mac osx 上的 JDBC 连接 mysql

java - 用于 JDBC 连接的 log4j2 + slf4j 配置

java - 如何从 Mac 终端运行 JDBC 代码?

apache2 - 收到带有签名的 Ajp 无效消息

java - 在 Tomcat 中禁用 SSL/TLS 重新协商

php - PHP 中的 MySQL 到 JSON