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 James Perkins) 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.