저는 Java 세계에 처음 접했고 Javax Web Service 응용 프로그램을 디버깅해야합니다.Tomcat의 Catalina 오류 로그에 URL 표시
일부 페이지는 예외를 발생시키고 올바르게 기록되지만 코드를 호출 한 페이지의 URL, 로그 내 및 스택 추적을 갖고 싶습니다.
GET 및 POST 정보 역시 중요합니다.
가능합니까?
저는 Java 세계에 처음 접했고 Javax Web Service 응용 프로그램을 디버깅해야합니다.Tomcat의 Catalina 오류 로그에 URL 표시
일부 페이지는 예외를 발생시키고 올바르게 기록되지만 코드를 호출 한 페이지의 URL, 로그 내 및 스택 추적을 갖고 싶습니다.
GET 및 POST 정보 역시 중요합니다.
가능합니까?
스택 추적과 함께 오류 로그에 표시하려면 Filter
이 필요합니다.
doFilter()
메서드를 구현하여 각 요청의 호출 URL을 확인하고 기록하십시오. 아래에 몇 가지 샘플 코드를 제공했습니다.
HttpServletRequest
개체에 액세스하면 해당 메서드 중 하나를 호출 할 수 있습니다. 필요한 항목은 getRequestURI()
및 getMethod()
입니다.
로거가있는 것으로 가정하고 출력을 원하는 로그 파일로 보낼 수 있습니다.
이 Filter
을 web.xml
에있는 /mywebservice
과 같은 URL 패턴으로 매핑하면 다른 요청에서는 호출되지 않고 웹 서비스에서만 호출됩니다.
<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>
예 ... 사용 AccessLogValve.
<Valve className="org.apache.catalina.valves.AccessLogValve"
directory="logs/access-logs/" prefix="localhost_access_log."
suffix=".log"
pattern="%h %l %t "%r" %s %b "%{Referer}i" "%{User-Agent}i" %T"
resolveHosts="false"/>
이 %의 필드에 대한 정보를 the docs를 참조하십시오 : 예를 들어
는c:\Program Files\Apache Software Foundation\Tomcat 6.0\conf\server.xml
에, 당신의
<Host>
요소에 다음과 같은 것을 넣어. 예. GET 및 POST 정보를 요청했습니다. 이 방법은 % r (또는 % m) 필드로 표시됩니다. 쿼리 매개 변수를 원하면 GET의 쿼리 문자열 (% q)에 포함됩니다.
위의 정보는 지정한 액세스 로그로 이동합니다. 오류가 발생할 때마다 (그리고 오류가있는 경우에만) 오류 로그에이 정보를 요청하는 경우 : 일부 구성 요소는 이미이를 수행하지만 그렇지 않은 경우이를 수행하는 방법을 알지 못합니다. 오류가 발생하고 URL이 제공되지 않으면 오류 로그의 로그를 액세스하고 로그를 액세스하여 로그를 연관시킵니다.
다양한 기능에 대한 로깅의 세분성을 설정할 수 있습니다 (Logging in Tomcat 참조). 발생하는 오류와 관련이있을 수도 있고 그렇지 않을 수도있는 더 많은 정보를 얻을 수 있습니다.
감사합니다, 작동하지만 모든 페이지 액세스가 필요합니다. 오류 발생시에만 트리거하는 방법이 있습니까? –
요청 본문 (POST 요청의 데이터)을 가져 오려면'hsr.getReader()'(http://download.oracle.com/docs/cd/E17802_01/products/products/servlet/2.5)를 사용하십시오. /docs/servlet-2_5-mr2/index.html) 문자 데이터 인 경우. – LarsH
@Mahoua : 불행하게도이 경우 필터는 요청이 실행되기 전에 항상 트리거되므로 성공 또는 오류가 발생하는지 알 수 없습니다. – JoseK