-
Enhancement
-
Resolution: Done
-
Major
-
None
-
None
-
None
While the use of ConsoleAppender in Log4J application logging configurations is discouraged, JBoss could probably do a better job of managing its use.
Currently it's possible to encounter a deadlock if thread A invokes System.out.println() and thread B invokes Logger.info(). Thread A will get the lock on System.out (a java.io.PrintWriter), but then thread B will get the lock on the org.apache.log4j.ConsoleAppender. Then each thread is waiting on the other's lock.
The suggested improvement (discussed with jperkins-rhn) is to fork Log4J's ConsoleAppender so that instead of calling System.out.println, it calls the real stdout.
Bonus enhancement: Drop a WARN message to the system root logger discouraging the use of ConsoleAppender in application configurations.