This is an automated email from the ASF dual-hosted git repository. joshrosen pushed a commit to branch branch-3.3 in repository https://gitbox.apache.org/repos/asf/spark.git
The following commit(s) were added to refs/heads/branch-3.3 by this push: new 4da8f3a76b1 [SPARK-39361] Don't use Log4J2's extended throwable conversion pattern in default logging configurations 4da8f3a76b1 is described below commit 4da8f3a76b196383e00664e4d1c863f5fe927474 Author: Josh Rosen <joshro...@databricks.com> AuthorDate: Thu Jun 2 09:28:34 2022 -0700 [SPARK-39361] Don't use Log4J2's extended throwable conversion pattern in default logging configurations ### What changes were proposed in this pull request? This PR addresses a performance problem in Log4J 2 related to exception logging: in certain scenarios I observed that Log4J2's default exception stacktrace logging can be ~10x slower than Log4J 1. The problem stems from a new log pattern format in Log4J2 called ["extended exception"](https://logging.apache.org/log4j/2.x/manual/layouts.html#PatternExtendedException), which enriches the regular stacktrace string with information on the name of the JAR files that contained the classes in each stack frame. Log4J queries the classloader to determine the source JAR for each class. This isn't cheap, but this information is cached and reused in future exception logging calls. In certain scenarios involving runtime-generated classes, this lookup will fail and the failed lookup result will _not_ be cached. As a result, expensive classloading operations will be performed every time such an exception is logged. In addition to being very slow, these operations take out a lock on the classloader [...] By default, if you do not specify an explicit exception format in your logging pattern then Log4J2 will add this "extended exception" pattern (see PatternLayout's alwaysWriteExceptions flag in Log4J's documentation, plus [the code implementing that flag](https://github.com/apache/logging-log4j2/blob/d6c8ab0863c551cdf0f8a5b1966ab45e3cddf572/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/PatternParser.java#L206-L209) in Log4J2). In this PR, I have updated Spark's default Log4J2 configurations so that each pattern layout includes an explicit %ex so that it uses the normal (non-extended) exception logging format. This is the workaround that is currently recommended on the Log4J JIRA. ### Why are the changes needed? Avoid performance regressions in Spark programs which use Spark's default Log4J 2 configuration and log many exceptions. Although it's true that any program logging exceptions at a high rate should probably just fix the source of the exceptions, I think it's still a good idea for us to try to fix this out-of-the-box performance difference so that users' existing workloads do not regress when upgrading to 3.3.0. ### Does this PR introduce _any_ user-facing change? Yes: it changes the default exception logging format so that it matches Log4J 1's default rather than Log4J 2's. The new format is consistent with behavior in previous Spark versions, but is different than the behavior in the current Spark 3.3.0-rc3. ### How was this patch tested? Existing tests. Closes #36747 from JoshRosen/disable-log4j2-extended-exception-pattern. Authored-by: Josh Rosen <joshro...@databricks.com> Signed-off-by: Josh Rosen <joshro...@databricks.com> (cherry picked from commit fd45c3656be6add7cf483ddfb7016b12f77d7c8e) Signed-off-by: Josh Rosen <joshro...@databricks.com> --- R/log4j2.properties | 2 +- common/kvstore/src/test/resources/log4j2.properties | 2 +- common/network-common/src/test/resources/log4j2.properties | 2 +- common/network-shuffle/src/test/resources/log4j2.properties | 2 +- conf/log4j2.properties.template | 8 +++++++- .../main/resources/org/apache/spark/log4j2-defaults.properties | 2 +- core/src/main/scala/org/apache/spark/TestUtils.scala | 2 +- .../main/scala/org/apache/spark/util/logging/DriverLogger.scala | 2 +- core/src/test/resources/log4j2.properties | 4 ++-- docs/configuration.md | 2 +- external/avro/src/test/resources/log4j2.properties | 2 +- .../docker-integration-tests/src/test/resources/log4j2.properties | 4 ++-- external/kafka-0-10-sql/src/test/resources/log4j2.properties | 2 +- .../src/test/resources/log4j2.properties | 2 +- external/kafka-0-10/src/test/resources/log4j2.properties | 2 +- external/kinesis-asl/src/main/resources/log4j2.properties | 4 ++-- external/kinesis-asl/src/test/resources/log4j2.properties | 2 +- graphx/src/test/resources/log4j2.properties | 2 +- hadoop-cloud/src/test/resources/log4j2.properties | 4 ++-- launcher/src/test/resources/log4j2.properties | 4 ++-- mllib/src/test/resources/log4j2.properties | 2 +- repl/src/test/resources/log4j2.properties | 2 +- repl/src/test/scala/org/apache/spark/repl/ReplSuite.scala | 2 +- .../kubernetes/core/src/test/resources/log4j2.properties | 2 +- .../src/test/resources/log-config-test-log4j.properties | 2 +- .../integration-tests/src/test/resources/log4j2.properties | 2 +- .../spark/deploy/k8s/integrationtest/DecommissionSuite.scala | 2 +- resource-managers/mesos/src/test/resources/log4j2.properties | 2 +- resource-managers/yarn/src/test/resources/log4j2.properties | 2 +- .../scala/org/apache/spark/deploy/yarn/BaseYarnClusterSuite.scala | 2 +- sql/catalyst/src/test/resources/log4j2.properties | 2 +- sql/core/src/test/resources/log4j2.properties | 4 ++-- .../main/java/org/apache/hive/service/cli/CLIServiceUtils.java | 4 ++-- sql/hive-thriftserver/src/test/resources/log4j2.properties | 4 ++-- .../spark/sql/hive/thriftserver/HiveThriftServer2Suites.scala | 2 +- .../org/apache/spark/sql/hive/thriftserver/UISeleniumSuite.scala | 2 +- sql/hive/src/test/resources/log4j2.properties | 4 ++-- streaming/src/test/resources/log4j2.properties | 2 +- 38 files changed, 53 insertions(+), 47 deletions(-) diff --git a/R/log4j2.properties b/R/log4j2.properties index 8ed7b9f6c8c..689518e4280 100644 --- a/R/log4j2.properties +++ b/R/log4j2.properties @@ -24,7 +24,7 @@ appender.file.name = File appender.file.fileName = target/unit-tests.log appender.file.append = true appender.file.layout.type = PatternLayout -appender.file.layout.pattern = %d{yy/MM/dd HH:mm:ss.SSS} %t %p %c{1}: %m%n +appender.file.layout.pattern = %d{yy/MM/dd HH:mm:ss.SSS} %t %p %c{1}: %m%n%ex # Ignore messages below warning level from Jetty, because it's a bit verbose logger.jetty.name = org.eclipse.jetty diff --git a/common/kvstore/src/test/resources/log4j2.properties b/common/kvstore/src/test/resources/log4j2.properties index 9a0fd7cdc6f..551abd8413c 100644 --- a/common/kvstore/src/test/resources/log4j2.properties +++ b/common/kvstore/src/test/resources/log4j2.properties @@ -24,7 +24,7 @@ appender.file.name = File appender.file.fileName = target/unit-tests.log appender.file.append = true appender.file.layout.type = PatternLayout -appender.file.layout.pattern = %d{yy/MM/dd HH:mm:ss.SSS} %t %p %c{1}: %m%n +appender.file.layout.pattern = %d{yy/MM/dd HH:mm:ss.SSS} %t %p %c{1}: %m%n%ex # Silence verbose logs from 3rd-party libraries. logger.netty.name = io.netty diff --git a/common/network-common/src/test/resources/log4j2.properties b/common/network-common/src/test/resources/log4j2.properties index 9a0fd7cdc6f..551abd8413c 100644 --- a/common/network-common/src/test/resources/log4j2.properties +++ b/common/network-common/src/test/resources/log4j2.properties @@ -24,7 +24,7 @@ appender.file.name = File appender.file.fileName = target/unit-tests.log appender.file.append = true appender.file.layout.type = PatternLayout -appender.file.layout.pattern = %d{yy/MM/dd HH:mm:ss.SSS} %t %p %c{1}: %m%n +appender.file.layout.pattern = %d{yy/MM/dd HH:mm:ss.SSS} %t %p %c{1}: %m%n%ex # Silence verbose logs from 3rd-party libraries. logger.netty.name = io.netty diff --git a/common/network-shuffle/src/test/resources/log4j2.properties b/common/network-shuffle/src/test/resources/log4j2.properties index 4fc8e41b6f0..fbdac2fb170 100644 --- a/common/network-shuffle/src/test/resources/log4j2.properties +++ b/common/network-shuffle/src/test/resources/log4j2.properties @@ -24,4 +24,4 @@ appender.file.name = File appender.file.fileName = target/unit-tests.log appender.file.append = true appender.file.layout.type = PatternLayout -appender.file.layout.pattern = %d{yy/MM/dd HH:mm:ss.SSS} %t %p %c{1}: %m%n +appender.file.layout.pattern = %d{yy/MM/dd HH:mm:ss.SSS} %t %p %c{1}: %m%n%ex diff --git a/conf/log4j2.properties.template b/conf/log4j2.properties.template index 99f68a8a9e9..ab96e03baed 100644 --- a/conf/log4j2.properties.template +++ b/conf/log4j2.properties.template @@ -19,11 +19,17 @@ rootLogger.level = info rootLogger.appenderRef.stdout.ref = console +# In the pattern layout configuration below, we specify an explicit `%ex` conversion +# pattern for logging Throwables. If this was omitted, then (by default) Log4J would +# implicitly add an `%xEx` conversion pattern which logs stacktraces with additional +# class packaging information. That extra information can sometimes add a substantial +# performance overhead, so we disable it in our default logging config. +# For more information, see SPARK-39361. appender.console.type = Console appender.console.name = console appender.console.target = SYSTEM_ERR appender.console.layout.type = PatternLayout -appender.console.layout.pattern = %d{yy/MM/dd HH:mm:ss} %p %c{1}: %m%n +appender.console.layout.pattern = %d{yy/MM/dd HH:mm:ss} %p %c{1}: %m%n%ex # Set the default spark-shell/spark-sql log level to WARN. When running the # spark-shell/spark-sql, the log level for these classes is used to overwrite diff --git a/core/src/main/resources/org/apache/spark/log4j2-defaults.properties b/core/src/main/resources/org/apache/spark/log4j2-defaults.properties index cb3c70e2b87..62eab7f3ef9 100644 --- a/core/src/main/resources/org/apache/spark/log4j2-defaults.properties +++ b/core/src/main/resources/org/apache/spark/log4j2-defaults.properties @@ -23,7 +23,7 @@ appender.console.type = Console appender.console.name = STDOUT appender.console.target = SYSTEM_OUT appender.console.layout.type = PatternLayout -appender.console.layout.pattern = %d{yy/MM/dd HH:mm:ss} %p %c{1}: %m%n +appender.console.layout.pattern = %d{yy/MM/dd HH:mm:ss} %p %c{1}: %m%n%ex # Settings to quiet third party logs that are too verbose logger.jetty.name = org.sparkproject.jetty diff --git a/core/src/main/scala/org/apache/spark/TestUtils.scala b/core/src/main/scala/org/apache/spark/TestUtils.scala index 104e98b8ae0..880f8856fe3 100644 --- a/core/src/main/scala/org/apache/spark/TestUtils.scala +++ b/core/src/main/scala/org/apache/spark/TestUtils.scala @@ -431,7 +431,7 @@ private[spark] object TestUtils { val appenderBuilder = builder.newAppender("console", "CONSOLE") .addAttribute("target", ConsoleAppender.Target.SYSTEM_ERR) appenderBuilder.add(builder.newLayout("PatternLayout") - .addAttribute("pattern", "%d{yy/MM/dd HH:mm:ss} %p %c{1}: %m%n")) + .addAttribute("pattern", "%d{yy/MM/dd HH:mm:ss} %p %c{1}: %m%n%ex")) builder.add(appenderBuilder) builder.add(builder.newRootLogger(level).add(builder.newAppenderRef("console"))) val configuration = builder.build() diff --git a/core/src/main/scala/org/apache/spark/util/logging/DriverLogger.scala b/core/src/main/scala/org/apache/spark/util/logging/DriverLogger.scala index 4854a84eb56..c826cef213f 100644 --- a/core/src/main/scala/org/apache/spark/util/logging/DriverLogger.scala +++ b/core/src/main/scala/org/apache/spark/util/logging/DriverLogger.scala @@ -42,7 +42,7 @@ private[spark] class DriverLogger(conf: SparkConf) extends Logging { private val UPLOAD_CHUNK_SIZE = 1024 * 1024 private val UPLOAD_INTERVAL_IN_SECS = 5 - private val DEFAULT_LAYOUT = "%d{yy/MM/dd HH:mm:ss.SSS} %t %p %c{1}: %m%n" + private val DEFAULT_LAYOUT = "%d{yy/MM/dd HH:mm:ss.SSS} %t %p %c{1}: %m%n%ex" private val LOG_FILE_PERMISSIONS = new FsPermission(Integer.parseInt("770", 8).toShort) private val localLogFile: String = FileUtils.getFile( diff --git a/core/src/test/resources/log4j2.properties b/core/src/test/resources/log4j2.properties index c6cd10d639e..ab02104c696 100644 --- a/core/src/test/resources/log4j2.properties +++ b/core/src/test/resources/log4j2.properties @@ -23,7 +23,7 @@ appender.file.type = File appender.file.name = File appender.file.fileName = target/unit-tests.log appender.file.layout.type = PatternLayout -appender.file.layout.pattern = %d{yy/MM/dd HH:mm:ss.SSS} %t %p %c{1}: %m%n +appender.file.layout.pattern = %d{yy/MM/dd HH:mm:ss.SSS} %t %p %c{1}: %m%n%ex # Tests that launch java subprocesses can set the "test.appender" system property to # "console" to avoid having the child process's logs overwrite the unit test's @@ -32,7 +32,7 @@ appender.console.type = Console appender.console.name = console appender.console.target = SYSTEM_ERR appender.console.layout.type = PatternLayout -appender.console.layout.pattern = %t: %m%n +appender.console.layout.pattern = %t: %m%n%ex # Ignore messages below warning level from Jetty, because it's a bit verbose logger.jetty.name = org.sparkproject.jetty diff --git a/docs/configuration.md b/docs/configuration.md index 7952b4b1a2a..89097bf839e 100644 --- a/docs/configuration.md +++ b/docs/configuration.md @@ -449,7 +449,7 @@ of the most common options to set are: </tr> <tr> <td><code>spark.driver.log.layout</code></td> - <td>%d{yy/MM/dd HH:mm:ss.SSS} %t %p %c{1}: %m%n</td> + <td>%d{yy/MM/dd HH:mm:ss.SSS} %t %p %c{1}: %m%n%ex</td> <td> The layout for the driver logs that are synced to <code>spark.driver.log.dfsDir</code>. If this is not configured, it uses the layout for the first appender defined in log4j2.properties. If that is also not configured, driver logs diff --git a/external/avro/src/test/resources/log4j2.properties b/external/avro/src/test/resources/log4j2.properties index 31a235c5d82..02746f58f46 100644 --- a/external/avro/src/test/resources/log4j2.properties +++ b/external/avro/src/test/resources/log4j2.properties @@ -24,7 +24,7 @@ appender.file.name = File appender.file.fileName = target/unit-tests.log appender.file.append = true appender.file.layout.type = PatternLayout -appender.file.layout.pattern = %d{yy/MM/dd HH:mm:ss.SSS} %t %p %c{1}: %m%n +appender.file.layout.pattern = %d{yy/MM/dd HH:mm:ss.SSS} %t %p %c{1}: %m%n%ex # Ignore messages below warning level from Jetty, because it's a bit verbose logger.jetty.name = org.spark-project.jetty diff --git a/external/docker-integration-tests/src/test/resources/log4j2.properties b/external/docker-integration-tests/src/test/resources/log4j2.properties index a6db7b73f6f..bc2edf5a771 100644 --- a/external/docker-integration-tests/src/test/resources/log4j2.properties +++ b/external/docker-integration-tests/src/test/resources/log4j2.properties @@ -24,7 +24,7 @@ appender.file.name = File appender.file.fileName = target/unit-tests.log appender.file.append = true appender.file.layout.type = PatternLayout -appender.file.layout.pattern = %d{yy/MM/dd HH:mm:ss.SSS} %t %p %c{1}: %m%n +appender.file.layout.pattern = %d{yy/MM/dd HH:mm:ss.SSS} %t %p %c{1}: %m%n%ex # Tests that launch java subprocesses can set the "test.appender" system property to # "console" to avoid having the child process's logs overwrite the unit test's @@ -33,7 +33,7 @@ appender.console.type = Console appender.console.name = console appender.console.target = SYSTEM_ERR appender.console.layout.type = PatternLayout -appender.console.layout.pattern = %d{yy/MM/dd HH:mm:ss.SSS} %t %p %c{1}: %m%n +appender.console.layout.pattern = %d{yy/MM/dd HH:mm:ss.SSS} %t %p %c{1}: %m%n%ex # Ignore messages below warning level from Jetty, because it's a bit verbose logger.jetty.name = org.sparkproject.jetty diff --git a/external/kafka-0-10-sql/src/test/resources/log4j2.properties b/external/kafka-0-10-sql/src/test/resources/log4j2.properties index 4c2d2d0b053..cb454ef0498 100644 --- a/external/kafka-0-10-sql/src/test/resources/log4j2.properties +++ b/external/kafka-0-10-sql/src/test/resources/log4j2.properties @@ -24,7 +24,7 @@ appender.file.name = File appender.file.fileName = target/unit-tests.log appender.file.append = true appender.file.layout.type = PatternLayout -appender.file.layout.pattern = %d{yy/MM/dd HH:mm:ss.SSS} %t %p %c{1}: %m%n +appender.file.layout.pattern = %d{yy/MM/dd HH:mm:ss.SSS} %t %p %c{1}: %m%n%ex # Ignore messages below warning level from Jetty, because it's a bit verbose logger.jetty.name = org.spark-project.jetty diff --git a/external/kafka-0-10-token-provider/src/test/resources/log4j2.properties b/external/kafka-0-10-token-provider/src/test/resources/log4j2.properties index 31a235c5d82..02746f58f46 100644 --- a/external/kafka-0-10-token-provider/src/test/resources/log4j2.properties +++ b/external/kafka-0-10-token-provider/src/test/resources/log4j2.properties @@ -24,7 +24,7 @@ appender.file.name = File appender.file.fileName = target/unit-tests.log appender.file.append = true appender.file.layout.type = PatternLayout -appender.file.layout.pattern = %d{yy/MM/dd HH:mm:ss.SSS} %t %p %c{1}: %m%n +appender.file.layout.pattern = %d{yy/MM/dd HH:mm:ss.SSS} %t %p %c{1}: %m%n%ex # Ignore messages below warning level from Jetty, because it's a bit verbose logger.jetty.name = org.spark-project.jetty diff --git a/external/kafka-0-10/src/test/resources/log4j2.properties b/external/kafka-0-10/src/test/resources/log4j2.properties index 31a235c5d82..02746f58f46 100644 --- a/external/kafka-0-10/src/test/resources/log4j2.properties +++ b/external/kafka-0-10/src/test/resources/log4j2.properties @@ -24,7 +24,7 @@ appender.file.name = File appender.file.fileName = target/unit-tests.log appender.file.append = true appender.file.layout.type = PatternLayout -appender.file.layout.pattern = %d{yy/MM/dd HH:mm:ss.SSS} %t %p %c{1}: %m%n +appender.file.layout.pattern = %d{yy/MM/dd HH:mm:ss.SSS} %t %p %c{1}: %m%n%ex # Ignore messages below warning level from Jetty, because it's a bit verbose logger.jetty.name = org.spark-project.jetty diff --git a/external/kinesis-asl/src/main/resources/log4j2.properties b/external/kinesis-asl/src/main/resources/log4j2.properties index 0c0904b088b..9538957d5dd 100644 --- a/external/kinesis-asl/src/main/resources/log4j2.properties +++ b/external/kinesis-asl/src/main/resources/log4j2.properties @@ -23,14 +23,14 @@ appender.file.type = File appender.file.name = File appender.file.fileName = target/unit-tests.log appender.file.layout.type = PatternLayout -appender.file.layout.pattern = %d{yy/MM/dd HH:mm:ss.SSS} %p %c{1}: %m%n +appender.file.layout.pattern = %d{yy/MM/dd HH:mm:ss.SSS} %p %c{1}: %m%n%ex # Console appender appender.console.type = Console appender.console.name = STDOUT appender.console.target = SYSTEM_OUT appender.console.layout.type = PatternLayout -appender.console.layout.pattern = %d{yy/MM/dd HH:mm:ss} %p %c{1}: %m%n +appender.console.layout.pattern = %d{yy/MM/dd HH:mm:ss} %p %c{1}: %m%n%ex # Settings to quiet third party logs that are too verbose logger.jetty1.name = org.sparkproject.jetty diff --git a/external/kinesis-asl/src/test/resources/log4j2.properties b/external/kinesis-asl/src/test/resources/log4j2.properties index 08f43461b96..5f89859463a 100644 --- a/external/kinesis-asl/src/test/resources/log4j2.properties +++ b/external/kinesis-asl/src/test/resources/log4j2.properties @@ -24,7 +24,7 @@ appender.file.name = File appender.file.fileName = target/unit-tests.log appender.file.append = true appender.file.layout.type = PatternLayout -appender.file.layout.pattern = %d{yy/MM/dd HH:mm:ss.SSS} %t %p %c{1}: %m%n +appender.file.layout.pattern = %d{yy/MM/dd HH:mm:ss.SSS} %t %p %c{1}: %m%n%ex # Ignore messages below warning level from Jetty, because it's a bit verbose logger.jetty.name = org.sparkproject.jetty diff --git a/graphx/src/test/resources/log4j2.properties b/graphx/src/test/resources/log4j2.properties index 08f43461b96..5f89859463a 100644 --- a/graphx/src/test/resources/log4j2.properties +++ b/graphx/src/test/resources/log4j2.properties @@ -24,7 +24,7 @@ appender.file.name = File appender.file.fileName = target/unit-tests.log appender.file.append = true appender.file.layout.type = PatternLayout -appender.file.layout.pattern = %d{yy/MM/dd HH:mm:ss.SSS} %t %p %c{1}: %m%n +appender.file.layout.pattern = %d{yy/MM/dd HH:mm:ss.SSS} %t %p %c{1}: %m%n%ex # Ignore messages below warning level from Jetty, because it's a bit verbose logger.jetty.name = org.sparkproject.jetty diff --git a/hadoop-cloud/src/test/resources/log4j2.properties b/hadoop-cloud/src/test/resources/log4j2.properties index 640ec2e6305..01a9cafafa8 100644 --- a/hadoop-cloud/src/test/resources/log4j2.properties +++ b/hadoop-cloud/src/test/resources/log4j2.properties @@ -24,7 +24,7 @@ appender.file.name = File appender.file.fileName = target/unit-tests.log appender.file.append = true appender.file.layout.type = PatternLayout -appender.file.layout.pattern = %d{yy/MM/dd HH:mm:ss.SSS} %t %p %c{1}: %m%n +appender.file.layout.pattern = %d{yy/MM/dd HH:mm:ss.SSS} %t %p %c{1}: %m%n%ex # Tests that launch java subprocesses can set the "test.appender" system property to # "console" to avoid having the child process's logs overwrite the unit test's @@ -33,7 +33,7 @@ appender.console.type = Console appender.console.name = STDERR appender.console.target = SYSTEM_ERR appender.console.layout.type = PatternLayout -appender.console.layout.pattern = %t: %m%n +appender.console.layout.pattern = %t: %m%n%ex # Ignore messages below warning level from Jetty, because it's a bit verbose logger.jetty.name = org.spark_project.jetty diff --git a/launcher/src/test/resources/log4j2.properties b/launcher/src/test/resources/log4j2.properties index f7f2d7cfe4c..62d38fbf8f7 100644 --- a/launcher/src/test/resources/log4j2.properties +++ b/launcher/src/test/resources/log4j2.properties @@ -23,13 +23,13 @@ appender.file.type = File appender.file.name = File appender.file.fileName = target/unit-tests.log appender.file.layout.type = PatternLayout -appender.file.layout.pattern = %d{yy/MM/dd HH:mm:ss} %p %c{1}: %m%n +appender.file.layout.pattern = %d{yy/MM/dd HH:mm:ss} %p %c{1}: %m%n%ex appender.childproc.type = Console appender.childproc.name = childproc appender.childproc.target = SYSTEM_ERR appender.childproc.layout.type = PatternLayout -appender.childproc.layout.pattern = %t: %m%n +appender.childproc.layout.pattern = %t: %m%n%ex appender.outputredirtest.type = LogAppender appender.outputredirtest.name = outputredirtest diff --git a/mllib/src/test/resources/log4j2.properties b/mllib/src/test/resources/log4j2.properties index 101a732ea97..4c0b6e67527 100644 --- a/mllib/src/test/resources/log4j2.properties +++ b/mllib/src/test/resources/log4j2.properties @@ -24,7 +24,7 @@ appender.file.name = File appender.file.fileName = target/unit-tests.log appender.file.append = true appender.file.layout.type = PatternLayout -appender.file.layout.pattern = %d{yy/MM/dd HH:mm:ss.SSS} %t %p %c{1}: %m%n +appender.file.layout.pattern = %d{yy/MM/dd HH:mm:ss.SSS} %t %p %c{1}: %m%n%ex # Ignore messages below warning level from Jetty, because it's a bit verbose logger.jetty.name = org.sparkproject.jetty diff --git a/repl/src/test/resources/log4j2.properties b/repl/src/test/resources/log4j2.properties index 2654a3983a6..b644dd5f7b9 100644 --- a/repl/src/test/resources/log4j2.properties +++ b/repl/src/test/resources/log4j2.properties @@ -24,7 +24,7 @@ appender.file.name = file appender.file.fileName = target/unit-tests.log appender.file.append = true appender.file.layout.type = PatternLayout -appender.file.layout.pattern = %d{yy/MM/dd HH:mm:ss.SSS} %t %p %c{1}: %m%n +appender.file.layout.pattern = %d{yy/MM/dd HH:mm:ss.SSS} %t %p %c{1}: %m%n%ex # Ignore messages below warning level from Jetty, because it's a bit verbose logger.jetty.name = org.sparkproject.jetty diff --git a/repl/src/test/scala/org/apache/spark/repl/ReplSuite.scala b/repl/src/test/scala/org/apache/spark/repl/ReplSuite.scala index 2ff2120625b..69e1273f5fa 100644 --- a/repl/src/test/scala/org/apache/spark/repl/ReplSuite.scala +++ b/repl/src/test/scala/org/apache/spark/repl/ReplSuite.scala @@ -285,7 +285,7 @@ class ReplSuite extends SparkFunSuite with BeforeAndAfterAll { |appender.console.target = SYSTEM_ERR |appender.console.follow = true |appender.console.layout.type = PatternLayout - |appender.console.layout.pattern = %d{yy/MM/dd HH:mm:ss} %p %c{1}: %m%n + |appender.console.layout.pattern = %d{yy/MM/dd HH:mm:ss} %p %c{1}: %m%n%ex | |# Set the log level for this class to ERROR same as the default setting. |logger.repl.name = org.apache.spark.repl.Main diff --git a/resource-managers/kubernetes/core/src/test/resources/log4j2.properties b/resource-managers/kubernetes/core/src/test/resources/log4j2.properties index 712e6d6c30c..210405374f0 100644 --- a/resource-managers/kubernetes/core/src/test/resources/log4j2.properties +++ b/resource-managers/kubernetes/core/src/test/resources/log4j2.properties @@ -24,7 +24,7 @@ appender.file.name = File appender.file.fileName = target/unit-tests.log appender.file.append = true appender.file.layout.type = PatternLayout -appender.file.layout.pattern = %d{yy/MM/dd HH:mm:ss.SSS} %t %p %c{1}: %m%n +appender.file.layout.pattern = %d{yy/MM/dd HH:mm:ss.SSS} %t %p %c{1}: %m%n%ex # Ignore messages below warning level from a few verbose libraries. logger.jersey.name = com.sun.jersey diff --git a/resource-managers/kubernetes/integration-tests/src/test/resources/log-config-test-log4j.properties b/resource-managers/kubernetes/integration-tests/src/test/resources/log-config-test-log4j.properties index 17b8d598ac6..4aeea886251 100644 --- a/resource-managers/kubernetes/integration-tests/src/test/resources/log-config-test-log4j.properties +++ b/resource-managers/kubernetes/integration-tests/src/test/resources/log-config-test-log4j.properties @@ -23,4 +23,4 @@ appender.console.type = Console appender.console.name = console appender.console.target = SYSTEM_ERR appender.console.layout.type = PatternLayout -appender.console.layout.pattern = %d{yy/MM/dd HH:mm:ss} %p %c: %m%n +appender.console.layout.pattern = %d{yy/MM/dd HH:mm:ss} %p %c: %m%n%ex diff --git a/resource-managers/kubernetes/integration-tests/src/test/resources/log4j2.properties b/resource-managers/kubernetes/integration-tests/src/test/resources/log4j2.properties index 75ac84ac6e1..e7680d87bdf 100644 --- a/resource-managers/kubernetes/integration-tests/src/test/resources/log4j2.properties +++ b/resource-managers/kubernetes/integration-tests/src/test/resources/log4j2.properties @@ -24,7 +24,7 @@ appender.file.name = File appender.file.fileName = target/integration-tests.log appender.file.append = true appender.file.layout.type = PatternLayout -appender.file.layout.pattern = %d{yy/MM/dd HH:mm:ss.SSS} %t %p %c{1}: %m%n +appender.file.layout.pattern = %d{yy/MM/dd HH:mm:ss.SSS} %t %p %c{1}: %m%n%ex # Ignore messages below warning level from a few verbose libraries. logger.jersey.name = com.sun.jersey diff --git a/resource-managers/kubernetes/integration-tests/src/test/scala/org/apache/spark/deploy/k8s/integrationtest/DecommissionSuite.scala b/resource-managers/kubernetes/integration-tests/src/test/scala/org/apache/spark/deploy/k8s/integrationtest/DecommissionSuite.scala index 51ea1307236..5d1a57fb46e 100644 --- a/resource-managers/kubernetes/integration-tests/src/test/scala/org/apache/spark/deploy/k8s/integrationtest/DecommissionSuite.scala +++ b/resource-managers/kubernetes/integration-tests/src/test/scala/org/apache/spark/deploy/k8s/integrationtest/DecommissionSuite.scala @@ -47,7 +47,7 @@ private[spark] trait DecommissionSuite { k8sSuite: KubernetesSuite => |appender.console.name = console |appender.console.target = SYSTEM_OUT |appender.console.layout.type = PatternLayout - |appender.console.layout.pattern = %d{yy/MM/dd HH:mm:ss} %p %c{1}: %m%n + |appender.console.layout.pattern = %d{yy/MM/dd HH:mm:ss} %p %c{1}: %m%n%ex | |logger.spark.name = org.apache.spark |logger.spark.level = debug diff --git a/resource-managers/mesos/src/test/resources/log4j2.properties b/resource-managers/mesos/src/test/resources/log4j2.properties index a0d309ccb1d..88847106120 100644 --- a/resource-managers/mesos/src/test/resources/log4j2.properties +++ b/resource-managers/mesos/src/test/resources/log4j2.properties @@ -24,7 +24,7 @@ appender.file.name = File appender.file.fileName = target/unit-tests.log appender.file.append = true appender.file.layout.type = PatternLayout -appender.file.layout.pattern = %d{yy/MM/dd HH:mm:ss.SSS} %t %p %c{1}: %m%n +appender.file.layout.pattern = %d{yy/MM/dd HH:mm:ss.SSS} %t %p %c{1}: %m%n%ex # Ignore messages below warning level from Jetty, because it's a bit verbose logger.jetty.name = org.sparkproject.jetty diff --git a/resource-managers/yarn/src/test/resources/log4j2.properties b/resource-managers/yarn/src/test/resources/log4j2.properties index 96107fb3a3a..aa93bc14552 100644 --- a/resource-managers/yarn/src/test/resources/log4j2.properties +++ b/resource-managers/yarn/src/test/resources/log4j2.properties @@ -24,7 +24,7 @@ appender.file.name = File appender.file.fileName = target/unit-tests.log appender.file.append = true appender.file.layout.type = PatternLayout -appender.file.layout.pattern = %d{yy/MM/dd HH:mm:ss.SSS} %t %p %c{1}: %m%n +appender.file.layout.pattern = %d{yy/MM/dd HH:mm:ss.SSS} %t %p %c{1}: %m%n%ex # Ignore messages below warning level from a few verbose libraries. logger.jersey.name = com.sun.jersey diff --git a/resource-managers/yarn/src/test/scala/org/apache/spark/deploy/yarn/BaseYarnClusterSuite.scala b/resource-managers/yarn/src/test/scala/org/apache/spark/deploy/yarn/BaseYarnClusterSuite.scala index f92bcdd6775..87ea44255cc 100644 --- a/resource-managers/yarn/src/test/scala/org/apache/spark/deploy/yarn/BaseYarnClusterSuite.scala +++ b/resource-managers/yarn/src/test/scala/org/apache/spark/deploy/yarn/BaseYarnClusterSuite.scala @@ -53,7 +53,7 @@ abstract class BaseYarnClusterSuite |appender.console.name = console |appender.console.target = SYSTEM_ERR |appender.console.layout.type = PatternLayout - |appender.console.layout.pattern = %d{yy/MM/dd HH:mm:ss} %p %c{1}: %m%n + |appender.console.layout.pattern = %d{yy/MM/dd HH:mm:ss} %p %c{1}: %m%n%ex |logger.jetty.name = org.sparkproject.jetty |logger.jetty.level = warn |logger.eclipse.name = org.eclipse.jetty diff --git a/sql/catalyst/src/test/resources/log4j2.properties b/sql/catalyst/src/test/resources/log4j2.properties index 08f43461b96..5f89859463a 100644 --- a/sql/catalyst/src/test/resources/log4j2.properties +++ b/sql/catalyst/src/test/resources/log4j2.properties @@ -24,7 +24,7 @@ appender.file.name = File appender.file.fileName = target/unit-tests.log appender.file.append = true appender.file.layout.type = PatternLayout -appender.file.layout.pattern = %d{yy/MM/dd HH:mm:ss.SSS} %t %p %c{1}: %m%n +appender.file.layout.pattern = %d{yy/MM/dd HH:mm:ss.SSS} %t %p %c{1}: %m%n%ex # Ignore messages below warning level from Jetty, because it's a bit verbose logger.jetty.name = org.sparkproject.jetty diff --git a/sql/core/src/test/resources/log4j2.properties b/sql/core/src/test/resources/log4j2.properties index 2ab43f896fc..b1f3a726a92 100644 --- a/sql/core/src/test/resources/log4j2.properties +++ b/sql/core/src/test/resources/log4j2.properties @@ -25,7 +25,7 @@ appender.console.type = Console appender.console.name = STDOUT appender.console.target = SYSTEM_OUT appender.console.layout.type = PatternLayout -appender.console.layout.pattern = %d{HH:mm:ss.SSS} %p %c: %m%n +appender.console.layout.pattern = %d{HH:mm:ss.SSS} %p %c: %m%n%ex appender.console.filter.threshold.type = ThresholdFilter appender.console.filter.threshold.level = warn @@ -34,7 +34,7 @@ appender.file.type = File appender.file.name = File appender.file.fileName = target/unit-tests.log appender.file.layout.type = PatternLayout -appender.file.layout.pattern = %d{HH:mm:ss.SSS} %t %p %c{1}: %m%n +appender.file.layout.pattern = %d{HH:mm:ss.SSS} %t %p %c{1}: %m%n%ex # Set the logger level of File Appender to WARN appender.file.filter.threshold.type = ThresholdFilter diff --git a/sql/hive-thriftserver/src/main/java/org/apache/hive/service/cli/CLIServiceUtils.java b/sql/hive-thriftserver/src/main/java/org/apache/hive/service/cli/CLIServiceUtils.java index a371b137170..97ea1ca0d4c 100644 --- a/sql/hive-thriftserver/src/main/java/org/apache/hive/service/cli/CLIServiceUtils.java +++ b/sql/hive-thriftserver/src/main/java/org/apache/hive/service/cli/CLIServiceUtils.java @@ -29,9 +29,9 @@ public class CLIServiceUtils { private static final char SEARCH_STRING_ESCAPE = '\\'; public static final StringLayout verboseLayout = PatternLayout.newBuilder().withPattern( - "%d{yy/MM/dd HH:mm:ss} %p %c{2}: %m%n").build(); + "%d{yy/MM/dd HH:mm:ss} %p %c{2}: %m%n%ex").build(); public static final StringLayout nonVerboseLayout = PatternLayout.newBuilder().withPattern( - "%-5p : %m%n").build(); + "%-5p : %m%n%ex").build(); /** * Convert a SQL search pattern into an equivalent Java Regex. diff --git a/sql/hive-thriftserver/src/test/resources/log4j2.properties b/sql/hive-thriftserver/src/test/resources/log4j2.properties index 939335bf3ac..5a3681a2a7e 100644 --- a/sql/hive-thriftserver/src/test/resources/log4j2.properties +++ b/sql/hive-thriftserver/src/test/resources/log4j2.properties @@ -25,7 +25,7 @@ appender.console.type = Console appender.console.name = STDOUT appender.console.target = SYSTEM_OUT appender.console.layout.type = PatternLayout -appender.console.layout.pattern = %d{HH:mm:ss.SSS} %p %c: %m%n +appender.console.layout.pattern = %d{HH:mm:ss.SSS} %p %c: %m%n%ex appender.console.filter.1.type = Filters @@ -43,7 +43,7 @@ appender.file.type = File appender.file.name = File appender.file.fileName = target/unit-tests.log appender.file.layout.type = PatternLayout -appender.file.layout.pattern = %d{HH:mm:ss.SSS} %t %p %c{1}: %m%n +appender.file.layout.pattern = %d{HH:mm:ss.SSS} %t %p %c{1}: %m%n%ex appender.file.filter.1.type = Filters diff --git a/sql/hive-thriftserver/src/test/scala/org/apache/spark/sql/hive/thriftserver/HiveThriftServer2Suites.scala b/sql/hive-thriftserver/src/test/scala/org/apache/spark/sql/hive/thriftserver/HiveThriftServer2Suites.scala index bcb8ef0cdfb..15cc04f5bd5 100644 --- a/sql/hive-thriftserver/src/test/scala/org/apache/spark/sql/hive/thriftserver/HiveThriftServer2Suites.scala +++ b/sql/hive-thriftserver/src/test/scala/org/apache/spark/sql/hive/thriftserver/HiveThriftServer2Suites.scala @@ -1226,7 +1226,7 @@ abstract class HiveThriftServer2TestBase extends SparkFunSuite with BeforeAndAft |appender.console.name = console |appender.console.target = SYSTEM_ERR |appender.console.layout.type = PatternLayout - |appender.console.layout.pattern = %d{yy/MM/dd HH:mm:ss} %p %c{1}: %m%n + |appender.console.layout.pattern = %d{yy/MM/dd HH:mm:ss} %p %c{1}: %m%n%ex """.stripMargin, new File(s"$tempLog4jConf/log4j2.properties"), StandardCharsets.UTF_8) diff --git a/sql/hive-thriftserver/src/test/scala/org/apache/spark/sql/hive/thriftserver/UISeleniumSuite.scala b/sql/hive-thriftserver/src/test/scala/org/apache/spark/sql/hive/thriftserver/UISeleniumSuite.scala index 5d94be38de0..cd5bb1f6283 100644 --- a/sql/hive-thriftserver/src/test/scala/org/apache/spark/sql/hive/thriftserver/UISeleniumSuite.scala +++ b/sql/hive-thriftserver/src/test/scala/org/apache/spark/sql/hive/thriftserver/UISeleniumSuite.scala @@ -80,7 +80,7 @@ class UISeleniumSuite |appender.console.name = console |appender.console.target = SYSTEM_ERR |appender.console.layout.type = PatternLayout - |appender.console.layout.pattern = %d{yy/MM/dd HH:mm:ss} %p %c{1}: %m%n + |appender.console.layout.pattern = %d{yy/MM/dd HH:mm:ss} %p %c{1}: %m%n%ex """.stripMargin, new File(s"$tempLog4jConf/log4j2.properties"), StandardCharsets.UTF_8) diff --git a/sql/hive/src/test/resources/log4j2.properties b/sql/hive/src/test/resources/log4j2.properties index 16b89247891..cf9be6c68a5 100644 --- a/sql/hive/src/test/resources/log4j2.properties +++ b/sql/hive/src/test/resources/log4j2.properties @@ -25,7 +25,7 @@ appender.console.type = Console appender.console.name = STDOUT appender.console.target = SYSTEM_OUT appender.console.layout.type = PatternLayout -appender.console.layout.pattern = %d{HH:mm:ss.SSS} %p %c: %m%n +appender.console.layout.pattern = %d{HH:mm:ss.SSS} %p %c: %m%n%ex appender.console.filter.threshold.type = ThresholdFilter appender.console.filter.threshold.level = warn @@ -34,7 +34,7 @@ appender.file.type = File appender.file.name = File appender.file.fileName = target/unit-tests.log appender.file.layout.type = PatternLayout -appender.file.layout.pattern = %d{HH:mm:ss.SSS} %t %p %c{1}: %m%n +appender.file.layout.pattern = %d{HH:mm:ss.SSS} %t %p %c{1}: %m%n%ex # Set the logger level of File Appender to WARN appender.file.filter.threshold.type = ThresholdFilter diff --git a/streaming/src/test/resources/log4j2.properties b/streaming/src/test/resources/log4j2.properties index 08f43461b96..5f89859463a 100644 --- a/streaming/src/test/resources/log4j2.properties +++ b/streaming/src/test/resources/log4j2.properties @@ -24,7 +24,7 @@ appender.file.name = File appender.file.fileName = target/unit-tests.log appender.file.append = true appender.file.layout.type = PatternLayout -appender.file.layout.pattern = %d{yy/MM/dd HH:mm:ss.SSS} %t %p %c{1}: %m%n +appender.file.layout.pattern = %d{yy/MM/dd HH:mm:ss.SSS} %t %p %c{1}: %m%n%ex # Ignore messages below warning level from Jetty, because it's a bit verbose logger.jetty.name = org.sparkproject.jetty --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@spark.apache.org For additional commands, e-mail: commits-h...@spark.apache.org