ceki 02/05/09 12:53:38 Modified: src/java/org/apache/log4j/net SocketNode.java TelnetAppender.java src/java/org/apache/log4j/performance logging src/java/org/apache/log4j/performance/xml logging1000.xml Log: Fixed bug #8527. A closed TelnetAppender would continue waiting for connections even if its ServerSocket was closed. This caused massive output on the console. Revision Changes Path 1.20 +1 -1 jakarta-log4j/src/java/org/apache/log4j/net/SocketNode.java Index: SocketNode.java =================================================================== RCS file: /home/cvs/jakarta-log4j/src/java/org/apache/log4j/net/SocketNode.java,v retrieving revision 1.19 retrieving revision 1.20 diff -u -r1.19 -r1.20 --- SocketNode.java 9 May 2002 12:42:43 -0000 1.19 +++ SocketNode.java 9 May 2002 19:53:37 -0000 1.20 @@ -45,7 +45,7 @@ this.hierarchy = hierarchy; try { ois = new ObjectInputStream( - new BufferedInputStream(socket.getInputStream())); + new BufferedInputStream(socket.getInputStream())); } catch(Exception e) { logger.error("Could not open ObjectInputStream to "+socket, e); 1.3 +18 -17 jakarta-log4j/src/java/org/apache/log4j/net/TelnetAppender.java Index: TelnetAppender.java =================================================================== RCS file: /home/cvs/jakarta-log4j/src/java/org/apache/log4j/net/TelnetAppender.java,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- TelnetAppender.java 24 Apr 2002 01:16:12 -0000 1.2 +++ TelnetAppender.java 9 May 2002 19:53:37 -0000 1.3 @@ -13,6 +13,7 @@ import org.apache.log4j.Layout; import org.apache.log4j.spi.LoggingEvent; import org.apache.log4j.AppenderSkeleton; +import org.apache.log4j.helpers.LogLog; /** <p>The TelnetAppender is a log4j appender that specializes in @@ -47,7 +48,9 @@ private SocketHandler sh; private int port = 23; - /** this appender requires a layout to format the text to the attached client(s). */ + /** + This appender requires a layout to format the text to the + attached client(s). */ public boolean requiresLayout() { return true; } @@ -103,6 +106,7 @@ asynchronously. */ protected class SocketHandler extends Thread { + private boolean done = false; private Vector writers = new Vector(); private Vector connections = new Vector(); private ServerSocket serverSocket; @@ -113,15 +117,14 @@ for(Enumeration e = connections.elements();e.hasMoreElements();) { try { ((Socket)e.nextElement()).close(); - } - catch(Exception ex) { + } catch(Exception ex) { } } try { serverSocket.close(); + } catch(Exception ex) { } - catch(Exception ex) { - } + done = true; } /** sends a message to each of the clients in telnet-friendly output. */ @@ -132,37 +135,35 @@ PrintWriter writer = (PrintWriter)e.nextElement(); writer.print(message); if(writer.checkError()) { - // The client has closed the connection, remove it from our list: - connections.remove(sock); writers.remove(writer); - } } } - /** continually accepts client connections. Client connections - are refused when MAX_CONNECTIONS is reached. */ + /** + Continually accepts client connections. Client connections + are refused when MAX_CONNECTIONS is reached. + */ public void run() { - while(true) { + while(!done) { try { Socket newClient = serverSocket.accept(); PrintWriter pw = new PrintWriter(newClient.getOutputStream()); if(connections.size() < MAX_CONNECTIONS) { connections.addElement(newClient); writers.addElement(pw); - pw.print("TelnetAppender v1.0 (" + connections.size() + " active connections)\r\n\r\n"); + pw.print("TelnetAppender v1.0 (" + connections.size() + + " active connections)\r\n\r\n"); pw.flush(); - } - else { + } else { pw.print("Too many connections.\r\n"); pw.flush(); newClient.close(); } - } - catch(Exception e) { - e.printStackTrace(); + } catch(Exception e) { + LogLog.error("Encountered error while in SocketHandler loop.", e); } } } 1.4 +10 -1 jakarta-log4j/src/java/org/apache/log4j/performance/logging Index: logging =================================================================== RCS file: /home/cvs/jakarta-log4j/src/java/org/apache/log4j/performance/logging,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- logging 9 May 2002 15:43:44 -0000 1.3 +++ logging 9 May 2002 19:53:37 -0000 1.4 @@ -307,9 +307,18 @@ # =============================================================== TEST=1000 #RL=1000 -RL=20000 +RL=10000 if [ $TEST -ge $start ]; then java org.apache.log4j.performance.Logging xml/logging$TEST.xml $RL 100 100 + #multiRun 4 "SocketAppender" $SHORTRUN $DELAY +fi + + +TEST=1001 +#RL=1000 +RL=30000 +if [ $TEST -ge $start ]; then + java org.apache.log4j.performance.Logging xml/logging$TEST.xml $RL #multiRun 4 "SocketAppender" $SHORTRUN $DELAY fi 1.5 +1 -1 jakarta-log4j/src/java/org/apache/log4j/performance/xml/logging1000.xml Index: logging1000.xml =================================================================== RCS file: /home/cvs/jakarta-log4j/src/java/org/apache/log4j/performance/xml/logging1000.xml,v retrieving revision 1.4 retrieving revision 1.5 diff -u -r1.4 -r1.5 --- logging1000.xml 14 Jun 2001 10:07:08 -0000 1.4 +++ logging1000.xml 9 May 2002 19:53:38 -0000 1.5 @@ -4,7 +4,7 @@ <log4j:configuration xmlns:log4j='http://jakarta.apache.org/log4j/'> <appender name="NULL" class="org.apache.log4j.net.SocketAppender"> <param name="RemoteHost" value="localhost"/> - <param name="Port" value="1000"/> + <param name="Port" value="12345"/> <param name="ReconnectionDelay" value="1000"/> </appender>
-- To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>