-
Bug
-
Resolution: Done
-
Major
-
None
-
None
-
None
The suppressed exception format is not correct when multiple exceptions are suppressed. Too many causes are printed likely because the circular dependencies are not working correctly.
Example Reproducer
final RuntimeException r1 = new RuntimeException("Exception 1"); final RuntimeException r2 = new RuntimeException("Exception 2", r1); final RuntimeException r3 = new RuntimeException("Exception 3", r2); final RuntimeException cause = new RuntimeException("This is the cause", r1); cause.addSuppressed(r2); cause.addSuppressed(r3); Logger.getLogger(Main.class).error("Log message", cause);
Output from JBoss Log Manager
13:03:53,684 ERROR [com.jamezp.test.Main] Log message: java.lang.RuntimeException: This is the cause at com.jamezp.test.Main.main(Main.java:165) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at com.intellij.rt.execution.application.AppMain.main(AppMain.java:147) Suppressed: java.lang.RuntimeException: Exception 2 at com.jamezp.test.Main.main(Main.java:162) ... 5 more Caused by: java.lang.RuntimeException: Exception 1 at com.jamezp.test.Main.main(Main.java:161) ... 5 more Suppressed: java.lang.RuntimeException: Exception 3 at com.jamezp.test.Main.main(Main.java:163) ... 5 more Caused by: java.lang.RuntimeException: Exception 2 at com.jamezp.test.Main.main(Main.java:162) ... 5 more Caused by: java.lang.RuntimeException: Exception 1 at com.jamezp.test.Main.main(Main.java:161) ... 5 more Caused by: java.lang.RuntimeException: Exception 1 at com.jamezp.test.Main.main(Main.java:161) ... 5 more
Output from Throwable.printStackTrace()
java.lang.RuntimeException: This is the cause at com.jamezp.test.Main.main(Main.java:165) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at com.intellij.rt.execution.application.AppMain.main(AppMain.java:147) Suppressed: java.lang.RuntimeException: Exception 2 at com.jamezp.test.Main.main(Main.java:162) ... 5 more Caused by: java.lang.RuntimeException: Exception 1 at com.jamezp.test.Main.main(Main.java:161) ... 5 more Suppressed: java.lang.RuntimeException: Exception 3 at com.jamezp.test.Main.main(Main.java:163) ... 5 more [CIRCULAR REFERENCE:java.lang.RuntimeException: Exception 2] [CIRCULAR REFERENCE:java.lang.RuntimeException: Exception 1]
Output from JUL
Jan 26, 2017 1:06:29 PM com.jamezp.test.Main main ERROR: Log message java.lang.RuntimeException: This is the cause at com.jamezp.test.Main.main(Main.java:165) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at com.intellij.rt.execution.application.AppMain.main(AppMain.java:147) Suppressed: java.lang.RuntimeException: Exception 2 at com.jamezp.test.Main.main(Main.java:162) ... 5 more Caused by: java.lang.RuntimeException: Exception 1 at com.jamezp.test.Main.main(Main.java:161) ... 5 more Suppressed: java.lang.RuntimeException: Exception 3 at com.jamezp.test.Main.main(Main.java:163) ... 5 more [CIRCULAR REFERENCE:java.lang.RuntimeException: Exception 2] [CIRCULAR REFERENCE:java.lang.RuntimeException: Exception 1]
- is cloned by
-
JBEAP-11099 (7.0.z) Suppressed exception format is not correct
- Closed
-
JBEAP-12465 (7.1.0) Suppressed exception format is not correct
- Closed
- relates to
-
LOGMGR-118 Support suppressed exceptions in log formatting
- Resolved