diff --git a/core/src/test/scala/org/apache/spark/SparkFunSuite.scala b/core/src/test/scala/org/apache/spark/SparkFunSuite.scala index 939e64d8e1767..227c7083cfc8f 100644 --- a/core/src/test/scala/org/apache/spark/SparkFunSuite.scala +++ b/core/src/test/scala/org/apache/spark/SparkFunSuite.scala @@ -217,19 +217,27 @@ abstract class SparkFunSuite */ protected def withLogAppender( appender: Appender, - loggerName: Option[String] = None, + loggerNames: Seq[String] = Seq.empty, level: Option[Level] = None)( f: => Unit): Unit = { - val logger = loggerName.map(Logger.getLogger).getOrElse(Logger.getRootLogger) - val restoreLevel = logger.getLevel - logger.addAppender(appender) - if (level.isDefined) { - logger.setLevel(level.get) + val loggers = if (loggerNames.nonEmpty) { + loggerNames.map(Logger.getLogger) + } else { + Seq(Logger.getRootLogger) + } + val restoreLevels = loggers.map(_.getLevel) + loggers.foreach { logger => + logger.addAppender(appender) + if (level.isDefined) { + logger.setLevel(level.get) + } } try f finally { - logger.removeAppender(appender) + loggers.foreach(_.removeAppender(appender)) if (level.isDefined) { - logger.setLevel(restoreLevel) + loggers.zipWithIndex.foreach { case (logger, i) => + logger.setLevel(restoreLevels(i)) + } } } } diff --git a/sql/catalyst/src/test/scala/org/apache/spark/sql/catalyst/expressions/CodeGenerationSuite.scala b/sql/catalyst/src/test/scala/org/apache/spark/sql/catalyst/expressions/CodeGenerationSuite.scala index 0b4f08b76fdfe..44b6aa6b6271f 100644 --- a/sql/catalyst/src/test/scala/org/apache/spark/sql/catalyst/expressions/CodeGenerationSuite.scala +++ b/sql/catalyst/src/test/scala/org/apache/spark/sql/catalyst/expressions/CodeGenerationSuite.scala @@ -516,7 +516,7 @@ class CodeGenerationSuite extends SparkFunSuite with ExpressionEvalHelper { test("SPARK-25113: should log when there exists generated methods above HugeMethodLimit") { val appender = new LogAppender("huge method limit") - withLogAppender(appender, loggerName = Some(classOf[CodeGenerator[_, _]].getName)) { + withLogAppender(appender, loggerNames = Seq(classOf[CodeGenerator[_, _]].getName)) { val x = 42 val expr = HugeCodeIntExpression(x) val proj = GenerateUnsafeProjection.generate(Seq(expr)) diff --git a/sql/core/src/test/scala/org/apache/spark/sql/execution/adaptive/AdaptiveQueryExecSuite.scala b/sql/core/src/test/scala/org/apache/spark/sql/execution/adaptive/AdaptiveQueryExecSuite.scala index 2a2731374ebc6..8fc5dd85f693c 100644 --- a/sql/core/src/test/scala/org/apache/spark/sql/execution/adaptive/AdaptiveQueryExecSuite.scala +++ b/sql/core/src/test/scala/org/apache/spark/sql/execution/adaptive/AdaptiveQueryExecSuite.scala @@ -823,7 +823,7 @@ class AdaptiveQueryExecSuite val logAppender = new LogAppender("adaptive execution") withLogAppender( logAppender, - loggerName = Some(AdaptiveSparkPlanExec.getClass.getName.dropRight(1)), + loggerNames = Seq(AdaptiveSparkPlanExec.getClass.getName.dropRight(1)), level = Some(Level.TRACE)) { withSQLConf( SQLConf.ADAPTIVE_EXECUTION_ENABLED.key -> "true", @@ -1613,7 +1613,9 @@ class AdaptiveQueryExecSuite val testDf = df.groupBy("index") .agg(sum($"pv").alias("pv")) .join(dim, Seq("index")) - withLogAppender(testAppender, level = Some(Level.DEBUG)) { + val loggerNames = + Seq(classOf[BroadcastQueryStageExec].getName, classOf[ShuffleQueryStageExec].getName) + withLogAppender(testAppender, loggerNames, level = Some(Level.DEBUG)) { withSQLConf(SQLConf.ADAPTIVE_EXECUTION_ENABLED.key -> "true") { val result = testDf.collect() assert(result.length == 26)