4

私は Java の世界に慣れていないので、安らかな Javax Web サービス アプリケーションをデバッグする必要があります。

一部のページでは例外が発生し、それらは正しくログに記録されますが、コードを呼び出したページの URL をログとスタック トレースに記録したいと考えています。

GET および POST 情報も重要です。

出来ますか?

4

2 に答える 2

7

スタックトレースと一緒に(またはそれに近い)エラーログにこれが必要なので、おそらく。が必要ですFilter

doFilter()各リクエストの呼び出しURLを確認してログに記録するメソッドを実装します。以下にサンプルコードをいくつか示します。

オブジェクトにアクセスできるようになると、そのHttpServletRequestオブジェクトの任意のメソッドを呼び出すことができます。必要なメソッドgetRequestURI()とを参照してください。getMethod()

public void doFilter(ServletRequest request,ServletResponse response,FilterChain chain) throws IOException,ServletException
  {

HttpServletRequest hsr = (HttpServletRequest) request;


String incomingUrl=hsr.getRequestURI(); // fetch URL
String method =hsr.getMethod(); // fetch GET/POST method
logger.debug ("The caller was " + incomingUrl + method); // Send the output to any logger which you have defined
chain.doFilter(request, response);
}

ロガーが配置されていて、出力を希望のログファイルに送信できることを前提としています。

これをのようにFilterurl-patternにマップして、他のリクエストでは呼び出されず、Webサービスでのみ呼び出されるようにします。/mywebserviceweb.xml

<filter>
        <filter-name>Logging_URL_Filter</filter-name>
        <filter-class>com.mysite.URLFilter</filter-class>
    </filter>
<filter-mapping>
          <filter-name>Logging_URL_Filter</filter-name>
          <url-pattern>/mywebservice</url-pattern>
    </filter-mapping>
于 2010-08-24T04:45:39.407 に答える
1

はい... AccessLogValveを使用します。

たとえば、でc:\Program Files\Apache Software Foundation\Tomcat 6.0\conf\server.xml、次のようなものを<Host>要素に追加します。

   <Valve className="org.apache.catalina.valves.AccessLogValve"
        directory="logs/access-logs/" prefix="localhost_access_log."
        suffix=".log"
        pattern="%h %l %t &quot;%r&quot; %s %b &quot;%{Referer}i&quot; &quot;%{User-Agent}i&quot; %T"
        resolveHosts="false"/> 

%フィールドについては、ドキュメントを参照してください。たとえば、GETおよびPOST情報を要求しました。メソッドは、%r(または%m)フィールドで示されます。クエリパラメータが必要な場合、それらはGETのクエリ文字列(%q)の一部になります。

上記の情報は、指定したアクセスログに記録されます。エラーが発生するたびに(そして発生した場合にのみ)この情報をエラーログに記録するように求めている場合:一部のコンポーネントはすでにそれを実行していますが、それ以外の方法で発生させる方法がわかりません。エラーが発生し、URLが指定されていない場合は、エラーログとアクセスログのタイムスタンプを使用して、2つを関連付けます。

さまざまな機能のロギングの粒度を設定できます。Tomcatでのロギングを参照してください。これにより、発生するエラーに関連する場合と関連しない場合がある、より多くの情報を取得できます。

于 2010-08-23T21:54:20.400 に答える