[logback-user] Inconsistency in printing Throwable instances?

ceki ceki at qos.ch
Mon Jul 16 23:44:19 CEST 2012


I think this is a bug in ThrowableProxy. Could you please create a jira 
issue for this? Thank you.

On 16.07.2012 23:24, Abraham Lin wrote:
> Hi Ceki,
>
> Thanks for the response. Here's a trivial example:
>
>    public class Main {
>      public static void main( String[] args ) {
>        org.slf4j.Logger logger = org.slf4j.LoggerFactory
>            .getLogger( Main.class );
>        Exception e1 = new CustomException( );
>        e1.printStackTrace( System.out );
> logger.info <http://logger.info>( "", e1 );
>        System.out.println( );
>        Exception e2 = new CustomException( "Test message" );
>        e2.printStackTrace( System.out );
> logger.info <http://logger.info>( "", e2 );
>      }
>      static class CustomException extends Exception {
>        CustomException( ) {}
>        CustomException( String message ) { super( message ); }
>        @Override
>        public String toString( ) {
>          return super.toString( ) + " (from toString)";
>        }
>      }
>    }
>
> Running the above yields this output:
>
>    com.example.logback.Main$CustomException (from toString)
>      at com.example.logback.Main.main(Main.java:7)
>    17:19:50.445 [main] INFO  com.example.logback.Main -
>    com.example.logback.Main$CustomException: null
>      at com.example.logback.Main.main(Main.java:7) ~[classes/:na]
>    com.example.logback.Main$CustomException: Test message (from toString)
>      at com.example.logback.Main.main(Main.java:13)
>    17:19:50.451 [main] INFO  com.example.logback.Main -
>    com.example.logback.Main$CustomException: Test message
>      at com.example.logback.Main.main(Main.java:13) ~[classes/:na]
>
> What do you think?
>
> -Abraham
>
>
> On Mon, Jul 16, 2012 at 5:02 PM, ceki <ceki at qos.ch <mailto:ceki at qos.ch>>
> wrote:
>
>     Hi Abraham,
>
>     Can you provide an example of the difference?
>     --
>     Ceki
>     http://tinyurl.com/proLogback
>
>
>     On 16.07.2012 22:32, Abraham Lin wrote:
>
>         Hi,
>
>         In comparing the outputs of Throwable#printStackTrace and logback, I
>         found an inconsistency in how the Throwable instances are
>         printed. While
>         the former delegates to the Throwable instance's #toString
>         method, the
>         latter (partially) re-implements the default implementation in
>         Throwable, which means that data contained in the #toString
>         methods of
>         Throwable subclasses is discarded. While this is easy to work
>         around in
>         my own code, there is still a problem when working with third-party
>         libraries.
>
>         Is there a configuration option that would allow me to specify
>         my own
>         IThrowableProxy implementation? (I couldn't find any pages
>         describing
>         the extension points and how to activate them.) Or would it be more
>         appropriate to modify the ThrowableProxyUtil class so that it
>         behaves
>         similarly to #printStackTrace? Any ideas would be greatly
>         appreciated.
>
>         Thanks in advance!
>
>         -Abraham
>
>
>


-- 
Ceki
http://tinyurl.com/proLogback




More information about the Logback-user mailing list