Merge pull request #29070 from ennru/log-capture-init

Typed testkit: log capture logger initalisation
This commit is contained in:
Patrik Nordwall 2020-05-14 14:01:24 +02:00 committed by GitHub
commit 5dc56a6d8c
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -6,9 +6,10 @@ package akka.actor.testkit.typed.internal
import org.slf4j.LoggerFactory
import org.slf4j.event.Level
import akka.annotation.InternalApi
import scala.annotation.tailrec
/**
* INTERNAL API
*/
@ -16,9 +17,17 @@ import akka.annotation.InternalApi
def loggerNameOrRoot(loggerName: String): String =
if (loggerName == "") org.slf4j.Logger.ROOT_LOGGER_NAME else loggerName
def getLogbackLogger(loggerName: String): ch.qos.logback.classic.Logger = {
def getLogbackLogger(loggerName: String): ch.qos.logback.classic.Logger =
getLogbackLoggerInternal(loggerName, 50)
@tailrec
private def getLogbackLoggerInternal(loggerName: String, count: Int): ch.qos.logback.classic.Logger = {
LoggerFactory.getLogger(loggerNameOrRoot(loggerName)) match {
case logger: ch.qos.logback.classic.Logger => logger
case logger: ch.qos.logback.classic.Logger => logger
case _: org.slf4j.helpers.SubstituteLogger if count > 0 =>
// Wait for logging initialisation http://www.slf4j.org/codes.html#substituteLogger
Thread.sleep(50)
getLogbackLoggerInternal(loggerName, count - 1)
case null =>
throw new IllegalArgumentException(s"Couldn't find logger for [$loggerName].")
case other =>