Author: fhanik Date: Wed Apr 12 13:57:55 2006 New Revision: 393611 URL: http://svn.apache.org/viewcvs?rev=393611&view=rev Log: http://issues.apache.org/bugzilla/show_bug.cgi?id=33368 Already applied to 5.5, backport to 5.0 Fixed provided by Rainer Jung
Modified: tomcat/connectors/branches/tc5.0.x/util/java/org/apache/tomcat/util/log/SystemLogHandler.java Modified: tomcat/connectors/branches/tc5.0.x/util/java/org/apache/tomcat/util/log/SystemLogHandler.java URL: http://svn.apache.org/viewcvs/tomcat/connectors/branches/tc5.0.x/util/java/org/apache/tomcat/util/log/SystemLogHandler.java?rev=393611&r1=393610&r2=393611&view=diff ============================================================================== --- tomcat/connectors/branches/tc5.0.x/util/java/org/apache/tomcat/util/log/SystemLogHandler.java (original) +++ tomcat/connectors/branches/tc5.0.x/util/java/org/apache/tomcat/util/log/SystemLogHandler.java Wed Apr 12 13:57:55 2006 @@ -20,6 +20,7 @@ import java.io.PrintStream; import java.util.Hashtable; import java.util.Stack; +import java.util.EmptyStackException; /** * This helper class may be used to do sophisticated redirection of @@ -58,7 +59,7 @@ /** * Thread <-> CaptureLog associations. */ - protected static Hashtable logs = new Hashtable(); + protected static ThreadLocal logs = new ThreadLocal(); /** @@ -75,19 +76,20 @@ */ public static void startCapture() { CaptureLog log = null; - - // Synchronized for Bugzilla 31018 - synchronized(reuse) { - log = reuse.isEmpty() ? new CaptureLog() : (CaptureLog)reuse.pop(); + if (!reuse.isEmpty()) { + try { + log = (CaptureLog)reuse.pop(); + } catch (EmptyStackException e) { + log = new CaptureLog(); + } + } else { + log = new CaptureLog(); } - - Thread thread = Thread.currentThread(); - Stack stack = (Stack)logs.get(thread); + Stack stack = (Stack)logs.get(); if (stack == null) { stack = new Stack(); - logs.put(thread, stack); + logs.set(stack); } - stack.push(log); } @@ -96,7 +98,7 @@ * Stop capturing thread's output and return captured data as a String. */ public static String stopCapture() { - Stack stack = (Stack)logs.get(Thread.currentThread()); + Stack stack = (Stack)logs.get(); if (stack == null || stack.isEmpty()) { return null; } @@ -118,7 +120,7 @@ * Find PrintStream to which the output must be written to. */ protected PrintStream findStream() { - Stack stack = (Stack)logs.get(Thread.currentThread()); + Stack stack = (Stack)logs.get(); if (stack != null && !stack.isEmpty()) { CaptureLog log = (CaptureLog)stack.peek(); if (log != null) { --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]