在UrlRewriteFilter之前打印访问日志

时间:2011-03-22 13:18:48

标签: spring url-rewriting

我有一个应用程序,目前我正在使用两个过滤器。

第一个是UrlRewriteFilter,用于重写url。

<filter>
    <filter-name>UrlRewriteFilter</filter-name>
    <filter-class>org.tuckey.web.filters.urlrewrite.UrlRewriteFilter</filter-class>
    <init-param>
        <param-name>logLevel</param-name>
        <param-value>DEBUG</param-value>
    </init-param>
</filter>
<filter-mapping>
    <filter-name>UrlRewriteFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

其次是一个过滤器,它打印每个页面的性能以及URL。

<filter>
    <filter-name>PerfLoggingFilter</filter-name>
    <filter-class>
        com.sia.saa.common.filter.PerfLoggingFilter
        </filter-class>
</filter>
<filter-mapping>
    <filter-name>PerfLoggingFilter</filter-name>
    <url-pattern>*.form</url-pattern>
    <dispatcher>REQUEST</dispatcher>
    <dispatcher>FORWARD</dispatcher>
</filter-mapping>   

但是在日志中只会打印重写的URL而不是原始URL 请建议一种方法,以便网址重写可以继续,但在日志中只会打印原始网址。
注意:如果您需要其他详细信息,请发布问题。

2 个答案:

答案 0 :(得分:2)

由于UrlRewriteFilter使用RequestDispatcher.forward(),我猜您可以在日志记录过滤器中获取原始请求网址

request.getAttribute("javax.servlet.forward.request_uri")

以便您可以记录它们。

答案 1 :(得分:0)

在第一个过滤器之前是否不可能有第二个过滤器?如果先执行第二个过滤器,您将拥有原始URL ...