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( "", e1 );
      
      System.out.println( );
      
      Exception e2 = new CustomException( "Test message" );
      e2.printStackTrace( System.out );
      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@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



_______________________________________________
Logback-user mailing list
Logback-user@qos.ch
http://mailman.qos.ch/mailman/listinfo/logback-user