Hi, 

We are using Logback 1.1.3, and observed through jstack that quite a few threads were blocked in OutputStreamAppender.subAppend waiting to obtain the lock.

This is a Play Framework app running in a dockerized environment, configured to log to STDOUT and papertrail.

Stack trace:

"New I/O worker #23" #75 prio=5 os_prio=0 tid=0x00007f6fc9764000 nid=0xaa waiting for monitor entry [0x00007f6edd3e7000]
   java.lang.Thread.State: BLOCKED (on object monitor)
at ch.qos.logback.core.OutputStreamAppender.subAppend(OutputStreamAppender.java:211)
- waiting to lock <0x00000000ab0f8f50> (a ch.qos.logback.core.spi.LogbackLock)
at ch.qos.logback.core.OutputStreamAppender.append(OutputStreamAppender.java:103)
at ch.qos.logback.core.UnsynchronizedAppenderBase.doAppend(UnsynchronizedAppenderBase.java:88)
at ch.qos.logback.core.spi.AppenderAttachableImpl.appendLoopOnAppenders(AppenderAttachableImpl.java:48)
at ch.qos.logback.classic.Logger.appendLoopOnAppenders(Logger.java:273)
at ch.qos.logback.classic.Logger.callAppenders(Logger.java:260)
at ch.qos.logback.classic.Logger.buildLoggingEventAndAppend(Logger.java:442)
at ch.qos.logback.classic.Logger.filterAndLog_0_Or3Plus(Logger.java:396)
at ch.qos.logback.classic.Logger.info(Logger.java:600)
at play.api.LoggerLike$class.info(Logger.scala:93)
at play.api.Logger$.info(Logger.scala:167)

Any suggestions on what may be going on here?

Thanks 
-greg