火曜日, 9月 30, 2014

Tomcat8.0のRequestDumperFilterでServletの文字化け解消

$CATALINA_HOME/webapps/アプリ名/WEB-INF/web.xml の先頭部分につぎのように<filter>を追記する。

------------------------------------------------------------------------------
<web-app>

  <filter>
    <filter-name>requestdumper</filter-name>
    <filter-class>
      org.apache.catalina.filters.RequestDumperFilter
    </filter-class>
  </filter>
  <filter-mapping>
    <filter-name>requestdumper</filter-name>
    <url-pattern>/target_path/*</url-pattern>
  </filter-mapping>

(以下省略)
------------------------------------------------------------------------------

$CATALINA_HOME/conf/logging.properties を編集。

handlers = 1catalina.org.apache.juli.AsyncFileHandler, 2localhost.org.apache.juli.AsyncFileHandler, 3manager.org.apache.juli.AsyncFileHandler, 4host-manager.org.apache.juli.AsyncFileHandler, java.util.logging.ConsoleHandler



handlers = 1catalina.org.apache.juli.AsyncFileHandler, 2localhost.org.apache.juli.AsyncFileHandler, 3manager.org.apache.juli.AsyncFileHandler, 4host-manager.org.apache.juli.AsyncFileHandler, 5request-dumper.org.apache.juli.FileHandler, java.util.logging.ConsoleHandler

のように 5request-dumper.org.apache.juli.FileHandler, を追記し、

4host-manager.org.apache.juli.AsyncFileHandler.prefix = host-manager.

の下あたりに

# request dumper configuration
5request-dumper.org.apache.juli.FileHandler.level = INFO
5request-dumper.org.apache.juli.FileHandler.directory = ${catalina.base}/logs
5request-dumper.org.apache.juli.FileHandler.prefix = request-dumper.
5request-dumper.org.apache.juli.FileHandler.formatter = org.apache.juli.VerbatimFormatter
org.apache.catalina.filters.RequestDumperFilter.level = INFO
org.apache.catalina.filters.RequestDumperFilter.handlers = 5request-dumper.org.apache.juli.FileHandler

を追記する。
アプリをデプロイし直し、Tomcatを再起動。
これで

$CATALINA_HOME/logs/



request-dumper.2014-09-30.log

のようなログファイルが生成される。
理由はわからないが、POSTリクエストで送信されたUTF-8の2バイト文字が、それを受け取ったフィルターのurl-patternに含まれるServletで文字化けしなくなった。
ちなみにJavaのソースコードはシフトJIS。

0 件のコメント: