Back-End/SpringBoot

[SpringBoot] e.getStackTrace() 출력 결과 차이

코딩콩 2022. 8. 11. 17:07
  • log.error("stackTrace={}", e.getStackTrace());
에러내용
stackTrace=kr.co.test.controller.TestController.responseFail2(TestController.java:24)

기존에 getStackTrace하면 이렇게 간단하게만 나온다.

 

  • log.error("reason={}, stackTrace={}", e.getCause(), e.getStackTrace());
에러내용
reason= null, stackTrace=[kr.co.test.controller.TestController.responseFail2(TestController.java:24), java.base/
jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method), java.base/
jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62), java.base/
jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43), java.base/
java.lang.reflect.Method.invoke(Method.java:567), 
org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205), 
org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:150), 
org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:117), 
org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:895), 
org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:808), 
org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87), 
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1067), 
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:963), 
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006), 
org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:909), javax.servlet.http.HttpServlet.service(HttpServlet.java:681), 
org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883), javax.servlet.http.HttpServlet.service(HttpServlet.java:764), 
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:227), 
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162), org.apache.tomc…

getCause를 하고 났더니 getStackTrace 내용이 바꼈다.

 

  • log.error("stackTrace={}, reason={}", e.getStackTrace(), e.getCause());
에러내용
stackTrace=[kr.co.test.TestController.responseFail2(TestController.java:24), java.base/
jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method), java.base/
jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62), java.base/
jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43), java.base/
java.lang.reflect.Method.invoke(Method.java:567), 
org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205), 
org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:150), 
org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:117), 
org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:895), 
org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:808), 
org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87), 
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1067), 
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:963), 
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006), 
org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:909), javax.servlet.http.HttpServlet.service(HttpServlet.java:681), 
org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883), javax.servlet.http.HttpServlet.service(HttpServlet.java:764), 
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:227), 
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162), org.apache.tomcat.websocket.s…

그래서 getStackTrace를 먼저 해봤는데 똑같이 stack trace가 보인다.

 

  • log.error("reason={}, stackTrace={}", e, e.getStackTrace());
에러내용
reason=java.lang.NullPointerException, stackTrace=[kr.co.oasisbusiness.pickpie.payment.controller.TestController.responseFail2(TestController.java:24), 
java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method), java.base/
jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62), java.base/
jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43), java.base/
java.lang.reflect.Method.invoke(Method.java:567), 
org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205), 
org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:150), 
org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:117), 
org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:895), 
org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:808), 
org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87), 
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1067), 
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:963), 
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006), 
org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:909), javax.servlet.http.HttpServlet.service(HttpServlet.java:681), 
org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883), javax.servlet.http.HttpServlet.service(HttpServlet.java:764), 
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:227), 
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.j…

이유는 모르겠지만 위 코드로 원하는 로그(e.printStackTrace()를 출력하고 싶었다.)를 얻었다.