taetaetae / blog-comment

0 stars 0 forks source link

2019/06/30/controller-common-logging/ #5

Open utterances-bot opened 4 years ago

utterances-bot commented 4 years ago

Spring에서 Request를 우아하게 로깅하기 - 꿈꾸는 태태태의 공간

스프링 기반의 웹 어플리케이션을 만들다 보면 요청을 처리하는데 맨 처음에 위치하고 있는 Controller(이하 컨트롤러)라는 레이어를 만들게 된다. 그럴때면 사용자가 어떤 요청(Request)을 하였는지에 대해 확인이 필요할 수 있다.

https://taetaetae.github.io/2019/06/30/controller-common-logging/

LumpKim commented 4 years ago

status code가 4XX일 때에도 로그를 기록하는 방법은 없을까요? 에러가 발생했을 때 조회하지 못하는 게 아쉬워서요!

taetaetae commented 4 years ago

@by09115 충분히 가능하지 않을까요? request 를 확인하는 곳에 Pointcut 을 걸어두고 체크하면 할수도 있을것으로 보입니다 ㅎㅎ (입개발 지송..)

LumpKim commented 4 years ago

답변 감사드립니다! 조언해주신 내용 토대로 진행해 보겠습니다 😁😁

BrandPark commented 4 years ago

spring framework mvc모델에서 필터만들어서 적용 가능 한가요? 지금 해보고 있는데 로그가 안찍혀서 헤메고있습니다..

taetaetae commented 4 years ago

@kkm2005 해당코드를 이용해서 Spring 4 에서 사용중입니다. 어디가 안되시는지 로그와 코멘트 주시면 도움을 드릴수도 있을지 모르겠네요 ^^;

hongbin-dev commented 4 years ago

안녕하세요!! 좋은글 감사합니다. 혹시 코드 중에 여쭤볼게있는데요

//LoggerAspect.java

} catch (Throwable throwable) {
            throw throwable;
}

이 부분이 왜 들어가는지 알 수 있을까요..? try를 빼도 괜찮을 것 같다는 생각이들어서요.

taetaetae commented 4 years ago

@khb1109 네 제외해도 무방합니다. 아마 저곳에 다른 로직이 있었던것 같습니다~ 말씀하신대로 의미없는 로직으로 보이네요 ~ 알려주셔서 감사합니다!

hongbin-dev commented 4 years ago

@taetaetae 답변 감사합니다! 포스팅으로 좋은 로깅방법 얻어갑니다.

hongbin-dev commented 3 years ago

안녕하세요! 로깅이 포스팅이 너무 좋아서 프로젝트에 적용하게 됐는데요..! 프로젝트에서 이슈가 있어서 코멘트 남깁니다.🙂

ReadableRequestWrapper.class

while (iterator.hasNext()) {
        String key = (String)iterator.next();
        setParameter(key, jsonObject.get(key).toString().replace("\"", "\\\""));
}

해당 부분이 RequestDto를 파라미터를 꺼내는 로직으로 알고 있습니다. 팀 컨벤션에서 RequestDTO의 멤버의 nullable을 지원하느냐의 컨벤션에 다르겠지만. 현재 null을 넘길시 로거에서 에러가 발생하는 모습을 볼 수 있더라고요.

while (iterator.hasNext()) {
        String key = (String)iterator.next();
        setParameter(key, String.valueOf(jsonObject.get(key)).replace("\"", "\\\""));
}

String.valueOf()로 포장해주면 null안정성과 null일시 로거에 null로 찍어줄 수 있어서 범용성있는 것 같습니다.

감사합니다.

deepweller commented 3 years ago

안녕하세요. ReadableRequestWrapper 에 params 맵을 this.params.putAll(request.getParameterMap()); 하는 부분에 궁금한 점이 있는데요, params를 초기화하지 않고(이전 request body를 비우지 않고) putAll 하는 이유를 알 수 있을까요?