콘솔 오류 출력 다시 문의드립니다.
- 작성자 :
- 윤*운
- 작성일 :
- 2015-01-19 14:40:19
- 조회수 :
- 2,215
- 구분 :
- 개발환경
- 진행상태 :
- 완료
Q
프레임워크 2.6에서는 컨트롤러에서도 오류출력이 잘됐는데, 3.1에서는 컨트롤러에서 오류출력이 안됩니다.
service.impl 에서 되는건 알고있는데.. 왜 3.1소스에서는 컨트롤러에서 오류 표시가 안되는지..
오류 표시를 할 수있는 방법이 없는건지 문의드립니다.
의도적으로 service에서 로직을 구현하도록 하기위한 조치이신지 궁금하네요.
=============== 지난 문의와 답변 참고 해주세요====================
------------------- 문의 1 -------------------------------------------------------------------------
안녕하세요.
프레임워크 3.1 개발환경 사용중입니다.
Tomcat 6.0 입니다.
Exception이 나도 콘솔에 로그가 안나옵니다.
다른 프로젝트 개발중에 DB에러는 나오는데요. 컨트롤러에서 Java 에러는 로그가 안나옵니다. 에러페이지는 처리됨.
혹시 몰라서 새로 프로젝트 생성해서 기본 예제 실행해 보니 역시 안나옵니다.
런타임에러도 마찬가지고 throw해도 마찬가지입니다.
New > egovFrame Web Project 로 신규 프로젝트 생성
Generate Example 선택하고 프로젝트 생성 후 실행
EgovSampleController 에 throw new Exception("test");
=> 콘솔에 아무런 반응이 없습니다.
샘플 프로젝트 기준으로 설정 변경해야 할 부분이 어디인지 알려주세요.
-------------------------------- 문의1의 답변 ------------------------------------------------
Service 호출 시 발생된 Exception의 경우는 AOP 방식을 통하여 ExceptionHandler를 호출하고, 해당 Handler에서 로그를 찍어주시면 됩니다. (context-aspect.xml 참조)
문제는 Controller에서 발생된 Exception의 AOP의 적용 범위가 아니기 때문에 별도의 로그를 처리할 수 있는 부분의 개입이 없습니다.
이런 View 부분에 대한 Exceptioin 처리는 등록된 ExceptionResolver에 의해서 특정 View만을 리턴하여 해당 View(JSP)로만 이동하도록 되어 있습니다. (dispatcher-servlet.xml 상에 SimpleMappingExceptionResolver 참조)
이 경우는 해당 JSP 상에서 Exception에 대한 정보를 표시하는 기본 console (System.out 또는 System.err)에만 남기실 수 있고 log4j와 같은 처리를 지원하지 못합니다.
단순히 오류를 console 상에 표시(e.g printStackTrace 메소드 호출)하시려면 지정된 SimpleMappingExceptionResolver에 지정된 error jsp 상에서 일반적은 JSP의 에러 처리 방식과 동일하게 처리하시면 됩니다.
로그를 적용하시면 아무래도 AOP 추가 적용을 통하여 에러를 로그에 기록하는 Advice 추가가 필요하실 것 같습니다.
------------------- 문의 2 -------------------------------------------------------------------------
말씀하신대로 컨트롤러는 에러페이지에서 오류를 확인 할 수 있겠지만,
ajax 같은 경우 개발 진행중에 에러페이지 확인이 불편하여 콘솔을 확인하는게 좋을것 같은데요.
프레임워크2.6 버전과 3.1버전에서 샘플로 생성된 프로젝트 2개를 첨부파일로 업로드 했습니다.
두 프로젝트 모두 selectSampleList 메소드에 if(true) throw new Exception("test"); 추가하여
오류를 발생시켰는데요.
2.6버전에서는 콘솔에 에러표시가 되는 반면, 3.1버전에서 생성된 프로젝트는 출력이 안됩니다.
설정파일들을 비교해 봤는데 특이하게 다른 부분이 없다보니 다시 질문을 드리게 됐습니다.
바쁘시겠지만 3.1버전에서도 콘솔에 오류가 표시될수 있는 방법을 알려주시면 고맙겠습니다.
service.impl 에서 되는건 알고있는데.. 왜 3.1소스에서는 컨트롤러에서 오류 표시가 안되는지..
오류 표시를 할 수있는 방법이 없는건지 문의드립니다.
의도적으로 service에서 로직을 구현하도록 하기위한 조치이신지 궁금하네요.
=============== 지난 문의와 답변 참고 해주세요====================
------------------- 문의 1 -------------------------------------------------------------------------
안녕하세요.
프레임워크 3.1 개발환경 사용중입니다.
Tomcat 6.0 입니다.
Exception이 나도 콘솔에 로그가 안나옵니다.
다른 프로젝트 개발중에 DB에러는 나오는데요. 컨트롤러에서 Java 에러는 로그가 안나옵니다. 에러페이지는 처리됨.
혹시 몰라서 새로 프로젝트 생성해서 기본 예제 실행해 보니 역시 안나옵니다.
런타임에러도 마찬가지고 throw해도 마찬가지입니다.
New > egovFrame Web Project 로 신규 프로젝트 생성
Generate Example 선택하고 프로젝트 생성 후 실행
EgovSampleController 에 throw new Exception("test");
=> 콘솔에 아무런 반응이 없습니다.
샘플 프로젝트 기준으로 설정 변경해야 할 부분이 어디인지 알려주세요.
-------------------------------- 문의1의 답변 ------------------------------------------------
Service 호출 시 발생된 Exception의 경우는 AOP 방식을 통하여 ExceptionHandler를 호출하고, 해당 Handler에서 로그를 찍어주시면 됩니다. (context-aspect.xml 참조)
문제는 Controller에서 발생된 Exception의 AOP의 적용 범위가 아니기 때문에 별도의 로그를 처리할 수 있는 부분의 개입이 없습니다.
이런 View 부분에 대한 Exceptioin 처리는 등록된 ExceptionResolver에 의해서 특정 View만을 리턴하여 해당 View(JSP)로만 이동하도록 되어 있습니다. (dispatcher-servlet.xml 상에 SimpleMappingExceptionResolver 참조)
이 경우는 해당 JSP 상에서 Exception에 대한 정보를 표시하는 기본 console (System.out 또는 System.err)에만 남기실 수 있고 log4j와 같은 처리를 지원하지 못합니다.
단순히 오류를 console 상에 표시(e.g printStackTrace 메소드 호출)하시려면 지정된 SimpleMappingExceptionResolver에 지정된 error jsp 상에서 일반적은 JSP의 에러 처리 방식과 동일하게 처리하시면 됩니다.
로그를 적용하시면 아무래도 AOP 추가 적용을 통하여 에러를 로그에 기록하는 Advice 추가가 필요하실 것 같습니다.
------------------- 문의 2 -------------------------------------------------------------------------
말씀하신대로 컨트롤러는 에러페이지에서 오류를 확인 할 수 있겠지만,
ajax 같은 경우 개발 진행중에 에러페이지 확인이 불편하여 콘솔을 확인하는게 좋을것 같은데요.
프레임워크2.6 버전과 3.1버전에서 샘플로 생성된 프로젝트 2개를 첨부파일로 업로드 했습니다.
두 프로젝트 모두 selectSampleList 메소드에 if(true) throw new Exception("test"); 추가하여
오류를 발생시켰는데요.
2.6버전에서는 콘솔에 에러표시가 되는 반면, 3.1버전에서 생성된 프로젝트는 출력이 안됩니다.
설정파일들을 비교해 봤는데 특이하게 다른 부분이 없다보니 다시 질문을 드리게 됐습니다.
바쁘시겠지만 3.1버전에서도 콘솔에 오류가 표시될수 있는 방법을 알려주시면 고맙겠습니다.
A
안녕하세요 프레임워크센터입니다.
오류를 표시 못하는 것은 아니고, log가 덜 찍힌다는 표현이 맞을 듯 싶습니다.
controller에서 exception을 throw했을 때 console에 찍히는 게 다른 이유는
log4j 설정 때문입니다.
주신 두개의 프로젝트에서
sample26은
<logger name="org.springframework" level="DEBUG" additivity="false">
<appender-ref ref="console" />
</logger>
로 되어있고,
sample31은 level이 INFO로 되어있습니다.
그래서 sample26은 console log가 찍히고,
sample31은 많이 안찍히는 것처럼 보인 것 같습니다.
원하는대로 콘솔에 모든 log를 보시려면 sample31의 log4j설정을
<logger name="org.springframework" level="DEBUG" additivity="false">
<appender-ref ref="console" />
</logger>
로 변경하시면 될듯 합니다.
오류를 표시 못하는 것은 아니고, log가 덜 찍힌다는 표현이 맞을 듯 싶습니다.
controller에서 exception을 throw했을 때 console에 찍히는 게 다른 이유는
log4j 설정 때문입니다.
주신 두개의 프로젝트에서
sample26은
<logger name="org.springframework" level="DEBUG" additivity="false">
<appender-ref ref="console" />
</logger>
로 되어있고,
sample31은 level이 INFO로 되어있습니다.
그래서 sample26은 console log가 찍히고,
sample31은 많이 안찍히는 것처럼 보인 것 같습니다.
원하는대로 콘솔에 모든 log를 보시려면 sample31의 log4j설정을
<logger name="org.springframework" level="DEBUG" additivity="false">
<appender-ref ref="console" />
</logger>
로 변경하시면 될듯 합니다.