오류가있는 요청을 디버깅하려면 HttpServletRequest에서 오는 모든 정보를 인쇄하고 싶습니다.디버그 인쇄를위한 HttpServletRequest에 대한 효율적인 액세스
이제 일부 요청은 부분적으로 실패 할 수 있습니다 (예 : 여러 번 성공했지만 아직 실패했습니다). 실패한 내부 메소드에서 예외를 catch하고 오류 +를 인쇄하고 싶습니다. ServletUtil.toStringHttpServletRequest()를 호출하고 서비스를 계속 제공합니다 (저하되었지만 여전히 유용한 요청과 전체 요청 실패).
우리의 현재 구현은 doGet()에서와 같이 예외를 포착하여 바보 정보 ("getRules failed")를 출력하거나 doGet()에 대한 모든 예외를 throw하여 HttpServletRequest 여기서 관련 디버그 정보 (헤더, 매개 변수 ...)를 인쇄 할 수 있습니다.
HttpServletRequest를 요청하는 동안 요청 된 모든 함수에 전달하면 약간보기 흉한 것처럼 보입니다. 다른 멋진 해결 방법이 나타나지 않으면 대신 할 것입니다.
Before head를 만들면 ServletUtil.toStringHttpServletRequest()를 ThreadLocal 맵에 저장하면 메모리와 CPU 시간이 모두 낭비됩니다. 어떤 이유로, ThreadLocal에 HttpServletRequest 객체를 저장하는 것이 잘못되었다고 생각합니다. (틀린 경우 수정하십시오).
디버그 정보는 로컬 컴퓨터 로그에 모두 기록되며 devs (Great work log4j TLSSMTPAppender)로 직접 전자 메일로 보내 지므로 여러 곳에서 로그인하는 것이 실용적이지 않습니다 (진행중인 작업을 이해하기 위해 여러 개의 전자 메일을 조합해야 함). 서버에 ssh'ing 나이입니다 :) (우리는 여기에 모든 흐린 ... 서버 오류가 보게 될 때까지 존재하지 않을 수도 있습니다)
그래서 내 솔루션에 액세스하는 " PrintErrorUtility "(TODO : 더 나은 이름). 오류를 함께 출력하는 (String errorMsg, Throwable t, HttpServletRequest) 모든 관련 정보가 수신됩니다 ... 이것은 오류에 대해 알리지 만 요청을 취소하지는 않는 내부 try {} catch 블록에서 호출됩니다. 그것의.
분명히 프로덕션 환경에서 실행중인 서버를 사용하고 있습니다.
댓글? 제발 조언.
감사합니다. Maxim.
하지만 요청 속성에 예외를 저장하려면 요청 개체에 대한 액세스 권한이 있어야합니다. 다시 사각형 1을 가져 오지 않습니까? (내가 뭔가를 놓친 적이 없다면 실수를 바로 잡으십시오.) 편집 : 발견 된 모든 예외를 수집하는 <예외, 문자열> 맵을 전달합니다. 실제로는 꽤 좋은 아이디어입니다! 하지만 여전히 각 메서드에 대한 하나의 추가 매개 변수가 전혀 아니다 : ( –
특정 MVC 프레임 워크 또는 자체 개발 한 프레임 워크를 사용하고 있습니까? 대부분의 기존 MVC 프레임 워크는 "기본"원시를 잡을 수있는 스레드 로컬 컨텍스트를 가지고 있습니다 요청/응답 객체. – BalusC
MVC가 아니라 백엔드 서버입니다. 모든 서버는 요청 당 일치를 계산하며 프레임 워크는 코드 만 사용합니다. –