james-server-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Joachim Draeger <jdrae...@gmx.de>
Subject isLogEnabled() and StringBuffer
Date Tue, 14 Nov 2006 07:46:53 GMT

Hi!

Am I hitting another controversy topic? ;-)

Example from ImapHandler.java

        catch ( IOException e ) {
            if ( getLogger().isErrorEnabled() ) {
                StringBuffer exceptionBuffer =
                        new StringBuffer( 256 )
                        .append( "Cannot open connection from " )
                        .append( remoteHost )
                        .append( " (" )
                        .append( remoteIP )
                        .append( "): " )
                        .append( e.getMessage() );
                getLogger().error( exceptionBuffer.toString(), e );
            }
            throw e;
        }

IMHO this blows up the code and reduces the readability by only bringing
a negligible performance enhancement.
IMO the bottleneck is IO and in the big frameworks (JavaMail ;-) and not
in simple string computation.

Better readability will bring our users less bugs and costs only a few 
microseconds.

IMO StringBuffer is only mandatory when dealing with really big Strings
(like message headers/body) or when doing really much concats.
I would use isDebugEnabled() only inside a loop and not in a per command
issue.

BTW:

catch ( IOException e ) {
   getLogger().error( "Cannot open connection from " + remoteHost + " ("
                      + remoteIP + "): " + e.getMessage() );
   throw e;
}

To make it clear: I'm not proposing refactoring all around James. I just
don't want to make extensive use of isLogEnabled() and StringBuffer().
I'm going to remove it from Imap code where I think it brings more
readability. 

WDYT?

Joachim




---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org


Mime
View raw message