【问题标题】:tomcat 7 jdbc access log valve not workingtomcat 7 jdbc访问日志阀不工作
【发布时间】:2014-09-14 02:24:16
【问题描述】:

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

【问题讨论】:

    标签: mysql jdbc tomcat7 access-log tomcat-valve


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2011-11-27
      • 2017-11-25
      • 2018-01-14
      • 2014-06-29
      • 1970-01-01
      • 2016-08-16
      • 2020-08-21
      • 2020-05-22
      • 1970-01-01
      相关资源
      最近更新 更多