This is an automated email from the ASF dual-hosted git repository.
gyogal pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/livy.git
The following commit(s) were added to refs/heads/master by this push:
new e5accb98 [LIVY-1040] Migrate logging framework from Reload4j to Log4j2
e5accb98 is described below
commit e5accb9830627959b829c3025d3dc907d3e70e1b
Author: Gabor Roczei <[email protected]>
AuthorDate: Wed Jun 17 18:19:12 2026 +0200
[LIVY-1040] Migrate logging framework from Reload4j to Log4j2
## What changes were proposed in this pull request?
Replaced the reload4j dependency with the Log4j2 library across all modules.
Co-authored by Peter Toth and Gyorgy Gal:
- Added log4j-api, log4j-core, log4j-slf4j-impl and log4j-1.2-api
(backward-compat bridge) to dependencies
- Removed ch.qos.reload4j:reload4j from all module poms
- Migrated all log4j.properties test config files to log4j2.properties
using the new Log4j2 property-file syntax (rootLogger, appender.* keys)
## How was this patch tested?
It has been manually tested with the existing unit tests.
## Was this patch authored or co-authored using generative AI tooling?
No
Co-authored-by: Peter Toth <[email protected]>
Co-authored-by: Gyorgy Gal <[email protected]>
---
.../src/test/resources/log4j2.properties | 32 ++++---
client-common/pom.xml | 2 +-
.../src/test/resources/log4j2.properties | 33 ++++---
...perties.template => log4j2.properties.template} | 16 ++--
core/pom.xml | 18 +++-
.../livy-dev-cluster/conf/livy/log4j.properties | 33 -------
.../livy-dev-cluster/conf/livy/log4j2.properties | 43 +++++++++
.../livy-dev-cluster/conf/master/log4j.properties | 35 -------
.../livy-dev-cluster/conf/master/log4j2.properties | 42 ++++++++
.../livy-dev-cluster/conf/worker/log4j.properties | 35 -------
.../livy-dev-cluster/conf/worker/log4j2.properties | 43 +++++++++
integration-test/pom.xml | 8 ++
.../{log4j.properties => log4j2.properties} | 45 +++++----
pom.xml | 106 ++++++++++++++++++++-
repl/pom.xml | 21 +++-
.../src/test/resources/log4j2.properties | 32 ++++---
.../org/apache/livy/repl/ReplDriverSuite.scala | 2 +-
rsc/pom.xml | 21 +++-
rsc/src/test/resources/log4j.properties | 26 -----
.../src/test/resources/log4j2.properties | 28 +++---
scala-api/pom.xml | 2 +-
.../src/test/resources/log4j2.properties | 28 +++---
.../org/apache/livy/scalaapi/ScalaClientTest.scala | 2 +-
server/pom.xml | 10 +-
.../{log4j.properties => log4j2.properties} | 35 ++++---
thriftserver/client/pom.xml | 12 +++
thriftserver/server/pom.xml | 6 +-
.../{log4j.properties => log4j2.properties} | 36 ++++---
thriftserver/session/pom.xml | 2 +-
29 files changed, 485 insertions(+), 269 deletions(-)
diff --git a/client-http/src/test/resources/log4j.properties
b/api/src/test/resources/log4j2.properties
similarity index 59%
copy from client-http/src/test/resources/log4j.properties
copy to api/src/test/resources/log4j2.properties
index 9a1c19f2..93de5793 100644
--- a/client-http/src/test/resources/log4j.properties
+++ b/api/src/test/resources/log4j2.properties
@@ -16,22 +16,28 @@
#
# Set everything to be logged to the file target/unit-tests.log
-test.appender=file
-log4j.rootCategory=INFO, ${test.appender}
-log4j.appender.file=org.apache.log4j.FileAppender
-log4j.appender.file.append=true
-log4j.appender.file.file=target/unit-tests.log
-log4j.appender.file.layout=org.apache.log4j.PatternLayout
-log4j.appender.file.layout.ConversionPattern=%d{yy/MM/dd HH:mm:ss.SSS} %t %p
%c{1}: %m%n
+rootLogger.level = info
+rootLogger.appenderRef.file.ref = ${sys:test.appender:-File}
+
+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%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
# log file.
-log4j.appender.console=org.apache.log4j.ConsoleAppender
-log4j.appender.console.target=System.err
-log4j.appender.console.layout=org.apache.log4j.PatternLayout
-log4j.appender.console.layout.ConversionPattern=%t: %m%n
+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%ex
# Ignore messages below warning level from Jetty, because it's a bit verbose
-log4j.logger.org.apache.livy.shaded=INFO
-log4j.logger.org.eclipse.jetty=WARN
+logger.jetty.name = org.sparkproject.jetty
+logger.jetty.level = warn
+logger.livy_shaded.name = org.apache.livy.shaded
+logger.livy_shaded.value = info
+logger.eclipse_jetty.name = org.eclipse.jetty
+logger.eclipse_jetty.value = warn
diff --git a/client-common/pom.xml b/client-common/pom.xml
index 0337d379..8ee6927b 100644
--- a/client-common/pom.xml
+++ b/client-common/pom.xml
@@ -46,7 +46,7 @@
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
- <artifactId>slf4j-reload4j</artifactId>
+ <artifactId>slf4j-api</artifactId>
<scope>provided</scope>
</dependency>
</dependencies>
diff --git a/scala-api/src/test/resources/log4j.properties
b/client-http/src/test/resources/log4j2.properties
similarity index 61%
rename from scala-api/src/test/resources/log4j.properties
rename to client-http/src/test/resources/log4j2.properties
index 7f24092f..84b98e17 100644
--- a/scala-api/src/test/resources/log4j.properties
+++ b/client-http/src/test/resources/log4j2.properties
@@ -14,21 +14,28 @@
# See the License for the specific language governing permissions and
# limitations under the License.
#
+
# Set everything to be logged to the file target/unit-tests.log
-test.appender=file
-log4j.rootCategory=INFO, ${test.appender}
-log4j.appender.file=org.apache.log4j.FileAppender
-log4j.appender.file.append=true
-log4j.appender.file.file=target/unit-tests.log
-log4j.appender.file.layout=org.apache.log4j.PatternLayout
-log4j.appender.file.layout.ConversionPattern=%d{yy/MM/dd HH:mm:ss.SSS} %t %p
%c{1}: %m%n
+rootLogger.level = info
+rootLogger.appenderRef.file.ref = ${sys:test.appender:-File}
+
+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%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
# log file.
-log4j.appender.console=org.apache.log4j.ConsoleAppender
-log4j.appender.console.target=System.err
-log4j.appender.console.layout=org.apache.log4j.PatternLayout
-log4j.appender.console.layout.ConversionPattern=%t: %m%n
+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%ex
+
# Ignore messages below warning level from Jetty, because it's a bit verbose
-log4j.logger.org.spark-project.jetty=WARN
-org.spark-project.jetty.LEVEL=WARN
+logger.sparkproject.name = org.apache.livy.shaded
+logger.sparkproject.level = info
+logger.jetty.name = org.eclipse.jetty
+logger.jetty.level = warn
diff --git a/conf/log4j.properties.template b/conf/log4j2.properties.template
similarity index 70%
rename from conf/log4j.properties.template
rename to conf/log4j2.properties.template
index 70b67a6d..b4fbf0e7 100644
--- a/conf/log4j.properties.template
+++ b/conf/log4j2.properties.template
@@ -15,10 +15,14 @@
# limitations under the License.
#
# The default Livy logging configuration.
-log4j.rootCategory=INFO, console
-log4j.appender.console=org.apache.log4j.ConsoleAppender
-log4j.appender.console.target=System.err
-log4j.appender.console.layout=org.apache.log4j.PatternLayout
-log4j.appender.console.layout.ConversionPattern=%d{yy/MM/dd HH:mm:ss} %p
%c{1}: %m%n
-log4j.logger.org.eclipse.jetty=WARN
+rootLogger.level = info
+rootLogger.appenderRef.stdout.ref = console
+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
+
+logger.jetty.name = org.eclipse.jetty
+logger.jetty.level = warn
diff --git a/core/pom.xml b/core/pom.xml
index 56774c2d..8bbe4b7e 100644
--- a/core/pom.xml
+++ b/core/pom.xml
@@ -38,8 +38,20 @@
</dependency>
<dependency>
- <groupId>ch.qos.reload4j</groupId>
- <artifactId>reload4j</artifactId>
+ <groupId>org.apache.logging.log4j</groupId>
+ <artifactId>log4j-slf4j-impl</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.logging.log4j</groupId>
+ <artifactId>log4j-api</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.logging.log4j</groupId>
+ <artifactId>log4j-core</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.logging.log4j</groupId>
+ <artifactId>log4j-1.2-api</artifactId>
</dependency>
<dependency>
@@ -59,7 +71,7 @@
<dependency>
<groupId>org.slf4j</groupId>
- <artifactId>slf4j-reload4j</artifactId>
+ <artifactId>slf4j-api</artifactId>
</dependency>
<dependency>
diff --git a/dev/docker/livy-dev-cluster/conf/livy/log4j.properties
b/dev/docker/livy-dev-cluster/conf/livy/log4j.properties
deleted file mode 100644
index c3a2d09b..00000000
--- a/dev/docker/livy-dev-cluster/conf/livy/log4j.properties
+++ /dev/null
@@ -1,33 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements. See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License. You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-log4j.rootCategory=INFO, console, DRFA
-
-log4j.appender.console=org.apache.log4j.ConsoleAppender
-log4j.appender.console.target=System.err
-log4j.appender.console.layout=org.apache.log4j.PatternLayout
-log4j.appender.console.layout.ConversionPattern=%d %p %c{1} [%t]: %m%n
-
-log4j.appender.DRFA=org.apache.log4j.DailyRollingFileAppender
-log4j.appender.DRFA.File=/logs/livy-server.log
-# Rollver at midnight
-log4j.appender.DRFA.DatePattern=.yyyy-MM-dd
-log4j.appender.DRFA.layout=org.apache.log4j.PatternLayout
-# Pattern format: Date LogLevel LoggerName LogMessage
-log4j.appender.DRFA.layout.ConversionPattern=%d %p %c{1} [%t]: %m%n
-
-log4j.logger.org.eclipse.jetty=WARN
diff --git a/dev/docker/livy-dev-cluster/conf/livy/log4j2.properties
b/dev/docker/livy-dev-cluster/conf/livy/log4j2.properties
new file mode 100644
index 00000000..5025fab2
--- /dev/null
+++ b/dev/docker/livy-dev-cluster/conf/livy/log4j2.properties
@@ -0,0 +1,43 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements. See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+property.livy.log.dir = /logs
+property.livy.log.file = livy-server.log
+
+rootLogger.level = info
+rootLogger.appenderRefs = stdout, drfa
+rootLogger.appenderRef.stdout.ref = stdout
+rootLogger.appenderRef.drfa.ref = drfa
+
+appender.stdout.type = Console
+appender.stdout.name = stdout
+appender.stdout.layout.type = PatternLayout
+appender.stdout.layout.pattern = %d %p %c{1} [%t]: %m%n
+
+appender.drfa.type = RollingFile
+appender.drfa.name = drfa
+appender.drfa.fileName = ${livy.log.dir}/${livy.log.file}
+appender.drfa.filePattern = ${livy.log.dir}/${livy.log.file}.%d{yyyy-MM-dd}
+appender.drfa.layout.type = PatternLayout
+appender.drfa.layout.pattern = %d{ISO8601} %-5p %c{2} (%F:%M(%L)) - %m%n
+appender.drfa.policies.type = Policies
+appender.drfa.policies.time.type = TimeBasedTriggeringPolicy
+appender.drfa.policies.time.interval = 1
+
+logger.jetty.name = org.eclipse.jetty
+logger.jetty.level = warn
+
diff --git a/dev/docker/livy-dev-cluster/conf/master/log4j.properties
b/dev/docker/livy-dev-cluster/conf/master/log4j.properties
deleted file mode 100644
index 644032d2..00000000
--- a/dev/docker/livy-dev-cluster/conf/master/log4j.properties
+++ /dev/null
@@ -1,35 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements. See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License. You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-log4j.rootCategory=INFO, console, DRFA
-log4jspark.log.dir=/logs
-log4jspark.log.file=spark-master.log
-
-log4j.appender.console=org.apache.log4j.ConsoleAppender
-log4j.appender.console.target=System.err
-log4j.appender.console.layout=org.apache.log4j.PatternLayout
-log4j.appender.console.layout.ConversionPattern=%d %p %c{1} [%t]: %m%n
-
-log4j.appender.DRFA=org.apache.log4j.DailyRollingFileAppender
-log4j.appender.DRFA.File=${log4jspark.log.dir}/${log4jspark.log.file}
-# Rollver at midnight
-log4j.appender.DRFA.DatePattern=.yyyy-MM-dd
-log4j.appender.DRFA.layout=org.apache.log4j.PatternLayout
-# Pattern format: Date LogLevel LoggerName LogMessage
-log4j.appender.DRFA.layout.ConversionPattern=%d %p %c{1} [%t]: %m%n
-
-log4j.logger.org.eclipse.jetty=WARN
diff --git a/dev/docker/livy-dev-cluster/conf/master/log4j2.properties
b/dev/docker/livy-dev-cluster/conf/master/log4j2.properties
new file mode 100644
index 00000000..70db369b
--- /dev/null
+++ b/dev/docker/livy-dev-cluster/conf/master/log4j2.properties
@@ -0,0 +1,42 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements. See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+property.spark.log.dir = /logs
+property.spark.log.file = spark-master.log
+
+rootLogger.level = info
+rootLogger.appenderRefs = stdout, drfa
+rootLogger.appenderRef.stdout.ref = stdout
+rootLogger.appenderRef.drfa.ref = drfa
+
+appender.stdout.type = Console
+appender.stdout.name = stdout
+appender.stdout.layout.type = PatternLayout
+appender.stdout.layout.pattern = %d %p %c{1} [%t]: %m%n
+
+appender.drfa.type = RollingFile
+appender.drfa.name = drfa
+appender.drfa.fileName = ${spark.log.dir}/${spark.log.file}
+appender.drfa.filePattern = ${spark.log.dir}/${spark.log.file}.%d{yyyy-MM-dd}
+appender.drfa.layout.type = PatternLayout
+appender.drfa.layout.pattern = %d{ISO8601} %-5p %c{2} (%F:%M(%L)) - %m%n
+appender.drfa.policies.type = Policies
+appender.drfa.policies.time.type = TimeBasedTriggeringPolicy
+appender.drfa.policies.time.interval = 1
+
+logger.jetty.name = org.eclipse.jetty
+logger.jetty.level = warn
diff --git a/dev/docker/livy-dev-cluster/conf/worker/log4j.properties
b/dev/docker/livy-dev-cluster/conf/worker/log4j.properties
deleted file mode 100644
index 23c5ee5d..00000000
--- a/dev/docker/livy-dev-cluster/conf/worker/log4j.properties
+++ /dev/null
@@ -1,35 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements. See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License. You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-log4j.rootCategory=INFO, console, DRFA
-log4jspark.log.dir=/logs
-log4jspark.log.file=spark-worker.log
-
-log4j.appender.console=org.apache.log4j.ConsoleAppender
-log4j.appender.console.target=System.err
-log4j.appender.console.layout=org.apache.log4j.PatternLayout
-log4j.appender.console.layout.ConversionPattern=%d %p %c{1} [%t]: %m%n
-
-log4j.appender.DRFA=org.apache.log4j.DailyRollingFileAppender
-log4j.appender.DRFA.File=${log4jspark.log.dir}/${log4jspark.log.file}
-# Rollver at midnight
-log4j.appender.DRFA.DatePattern=.yyyy-MM-dd
-log4j.appender.DRFA.layout=org.apache.log4j.PatternLayout
-# Pattern format: Date LogLevel LoggerName LogMessage
-log4j.appender.DRFA.layout.ConversionPattern=%d %p %c{1} [%t]: %m%n
-
-log4j.logger.org.eclipse.jetty=WARN
diff --git a/dev/docker/livy-dev-cluster/conf/worker/log4j2.properties
b/dev/docker/livy-dev-cluster/conf/worker/log4j2.properties
new file mode 100644
index 00000000..8003e403
--- /dev/null
+++ b/dev/docker/livy-dev-cluster/conf/worker/log4j2.properties
@@ -0,0 +1,43 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements. See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+property.spark.log.dir = /logs
+property.spark.log.file = spark-worker.log
+
+rootLogger.level = info
+rootLogger.appenderRefs = stdout, drfa
+rootLogger.appenderRef.stdout.ref = stdout
+rootLogger.appenderRef.drfa.ref = drfa
+
+appender.stdout.type = Console
+appender.stdout.name = stdout
+appender.stdout.layout.type = PatternLayout
+appender.stdout.layout.pattern = %d %p %c{1} [%t]: %m%n
+
+appender.drfa.type = RollingFile
+appender.drfa.name = drfa
+appender.drfa.fileName = ${spark.log.dir}/${spark.log.file}
+appender.drfa.filePattern = ${spark.log.dir}/${spark.log.file}.%d{yyyy-MM-dd}
+appender.drfa.layout.type = PatternLayout
+appender.drfa.layout.pattern = %d{ISO8601} %-5p %c{2} (%F:%M(%L)) - %m%n
+appender.drfa.policies.type = Policies
+appender.drfa.policies.time.type = TimeBasedTriggeringPolicy
+appender.drfa.policies.time.interval = 1
+
+logger.jetty.name = org.eclipse.jetty
+logger.jetty.level = warn
+
diff --git a/integration-test/pom.xml b/integration-test/pom.xml
index 1f9d67a9..a71e2afd 100644
--- a/integration-test/pom.xml
+++ b/integration-test/pom.xml
@@ -215,6 +215,10 @@
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
</exclusion>
+ <exclusion>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-api</artifactId>
+ </exclusion>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
@@ -337,6 +341,10 @@
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-slf4j-impl</artifactId>
</exclusion>
+ <exclusion>
+ <groupId>log4j</groupId>
+ <artifactId>log4j</artifactId>
+ </exclusion>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
diff --git a/integration-test/src/test/resources/log4j.properties
b/integration-test/src/test/resources/log4j2.properties
similarity index 50%
rename from integration-test/src/test/resources/log4j.properties
rename to integration-test/src/test/resources/log4j2.properties
index 295df53b..e7db7e08 100644
--- a/integration-test/src/test/resources/log4j.properties
+++ b/integration-test/src/test/resources/log4j2.properties
@@ -16,27 +16,36 @@
#
# Set everything to be logged to the file target/unit-tests.log
-test.appender=file
-log4j.rootCategory=DEBUG, ${test.appender}
-log4j.appender.file=org.apache.log4j.FileAppender
-log4j.appender.file.append=true
-log4j.appender.file.file=target/unit-tests.log
-log4j.appender.file.layout=org.apache.log4j.PatternLayout
-log4j.appender.file.layout.ConversionPattern=%d{yy/MM/dd HH:mm:ss.SSS} %t %p
%c{1}: %m%n
+rootLogger.level = debug
+rootLogger.appenderRef.file.ref = ${sys:test.appender:-File}
+
+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%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
# log file.
-log4j.appender.console=org.apache.log4j.ConsoleAppender
-log4j.appender.console.target=System.err
-log4j.appender.console.layout=org.apache.log4j.PatternLayout
-log4j.appender.console.layout.ConversionPattern=%d{yy/MM/dd HH:mm:ss.SSS} %t:
%m%n
+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%ex
# Silence 3rd party libraries.
-log4j.logger.org.apache.livy.rsc=INFO
-log4j.logger.org.apache.livy.shaded=INFO
-log4j.logger.com.decodified=WARN
-log4j.logger.com.ning.http=WARN
-log4j.logger.org.apache.hadoop=WARN
-log4j.logger.org.eclipse.jetty=WARN
-log4j.logger.net.schmizz=WARN
+logger.livy_rsc.name = org.apache.livy.rsc
+logger.livy_rsc.level = info
+logger.livy_shaded.name = org.apache.livy.shaded
+logger.livy_shaded.level = info
+logger.decodified.name = com.decodified
+logger.decodified.level = warn
+logger.ning_http.name = com.ning.http
+logger.ning_http.level = warn
+logger.hadoop.name = org.apache.hadoop
+logger.hadoop.level = warn
+logger.schmizz.name = net.schmizz
+logger.schmizz.level = warn
+logger.jetty.name = org.eclipse.jetty
+logger.jetty.level = warn
diff --git a/pom.xml b/pom.xml
index 3ba2d405..218b4315 100644
--- a/pom.xml
+++ b/pom.xml
@@ -81,7 +81,6 @@
<asynchttpclient.version>2.10.1</asynchttpclient.version>
<hadoop.scope>compile</hadoop.scope>
<slf4j.version>1.7.36</slf4j.version>
- <reload4j.version>1.2.26</reload4j.version>
<spark.scala-2.12.version>3.3.4</spark.scala-2.12.version>
<spark.version>${spark.scala-2.12.version}</spark.version>
<kubernetes.client.version>5.6.0</kubernetes.client.version>
@@ -97,6 +96,7 @@
<jetty.version>9.4.56.v20240826</jetty.version>
<junit.version>4.13.1</junit.version>
<libthrift.version>0.9.3</libthrift.version>
+ <log4j.version>2.26.0</log4j.version>
<kryo.version>4.0.2</kryo.version>
<metrics.version>3.1.0</metrics.version>
<mockito.version>1.10.19</mockito.version>
@@ -282,9 +282,25 @@
<dependencies>
<dependency>
- <groupId>ch.qos.reload4j</groupId>
- <artifactId>reload4j</artifactId>
- <version>${reload4j.version}</version>
+ <groupId>org.apache.logging.log4j</groupId>
+ <artifactId>log4j-slf4j-impl</artifactId>
+ <version>${log4j.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.logging.log4j</groupId>
+ <artifactId>log4j-api</artifactId>
+ <version>${log4j.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.logging.log4j</groupId>
+ <artifactId>log4j-core</artifactId>
+ <version>${log4j.version}</version>
+ </dependency>
+ <dependency>
+ <!-- API bridge between log4j 1 and 2 -->
+ <groupId>org.apache.logging.log4j</groupId>
+ <artifactId>log4j-1.2-api</artifactId>
+ <version>${log4j.version}</version>
</dependency>
<dependency>
@@ -378,6 +394,14 @@
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
</exclusion>
+ <exclusion>
+ <groupId>ch.qos.reload4j</groupId>
+ <artifactId>reload4j</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-reload4j</artifactId>
+ </exclusion>
</exclusions>
</dependency>
@@ -414,6 +438,14 @@
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-server</artifactId>
</exclusion>
+ <exclusion>
+ <groupId>ch.qos.reload4j</groupId>
+ <artifactId>reload4j</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-reload4j</artifactId>
+ </exclusion>
</exclusions>
</dependency>
@@ -443,6 +475,14 @@
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-server</artifactId>
</exclusion>
+ <exclusion>
+ <groupId>ch.qos.reload4j</groupId>
+ <artifactId>reload4j</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-reload4j</artifactId>
+ </exclusion>
</exclusions>
</dependency>
@@ -483,6 +523,14 @@
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-xc</artifactId>
</exclusion>
+ <exclusion>
+ <groupId>ch.qos.reload4j</groupId>
+ <artifactId>reload4j</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-reload4j</artifactId>
+ </exclusion>
</exclusions>
</dependency>
@@ -495,6 +543,18 @@
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
</exclusion>
+ <exclusion>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-log4j12</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>ch.qos.reload4j</groupId>
+ <artifactId>reload4j</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-reload4j</artifactId>
+ </exclusion>
</exclusions>
</dependency>
@@ -512,6 +572,18 @@
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-core</artifactId>
</exclusion>
+ <exclusion>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-log4j12</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>ch.qos.reload4j</groupId>
+ <artifactId>reload4j</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-reload4j</artifactId>
+ </exclusion>
</exclusions>
</dependency>
@@ -566,6 +638,18 @@
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-jaxrs</artifactId>
</exclusion>
+ <exclusion>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-log4j12</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>ch.qos.reload4j</groupId>
+ <artifactId>reload4j</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-reload4j</artifactId>
+ </exclusion>
</exclusions>
</dependency>
@@ -593,6 +677,18 @@
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-client</artifactId>
</exclusion>
+ <exclusion>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-log4j12</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>ch.qos.reload4j</groupId>
+ <artifactId>reload4j</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-reload4j</artifactId>
+ </exclusion>
</exclusions>
</dependency>
@@ -857,7 +953,7 @@
<dependency>
<groupId>org.slf4j</groupId>
- <artifactId>slf4j-reload4j</artifactId>
+ <artifactId>slf4j-api</artifactId>
<version>${slf4j.version}</version>
</dependency>
diff --git a/repl/pom.xml b/repl/pom.xml
index 890a6780..2c950a2b 100644
--- a/repl/pom.xml
+++ b/repl/pom.xml
@@ -84,8 +84,23 @@
</dependency>
<dependency>
- <groupId>ch.qos.reload4j</groupId>
- <artifactId>reload4j</artifactId>
+ <groupId>org.apache.logging.log4j</groupId>
+ <artifactId>log4j-slf4j-impl</artifactId>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.logging.log4j</groupId>
+ <artifactId>log4j-api</artifactId>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.logging.log4j</groupId>
+ <artifactId>log4j-core</artifactId>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.logging.log4j</groupId>
+ <artifactId>log4j-1.2-api</artifactId>
<scope>provided</scope>
</dependency>
@@ -158,7 +173,7 @@
<dependency>
<groupId>org.slf4j</groupId>
- <artifactId>slf4j-reload4j</artifactId>
+ <artifactId>slf4j-api</artifactId>
<scope>provided</scope>
</dependency>
diff --git a/client-http/src/test/resources/log4j.properties
b/repl/src/test/resources/log4j2.properties
similarity index 59%
copy from client-http/src/test/resources/log4j.properties
copy to repl/src/test/resources/log4j2.properties
index 9a1c19f2..93de5793 100644
--- a/client-http/src/test/resources/log4j.properties
+++ b/repl/src/test/resources/log4j2.properties
@@ -16,22 +16,28 @@
#
# Set everything to be logged to the file target/unit-tests.log
-test.appender=file
-log4j.rootCategory=INFO, ${test.appender}
-log4j.appender.file=org.apache.log4j.FileAppender
-log4j.appender.file.append=true
-log4j.appender.file.file=target/unit-tests.log
-log4j.appender.file.layout=org.apache.log4j.PatternLayout
-log4j.appender.file.layout.ConversionPattern=%d{yy/MM/dd HH:mm:ss.SSS} %t %p
%c{1}: %m%n
+rootLogger.level = info
+rootLogger.appenderRef.file.ref = ${sys:test.appender:-File}
+
+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%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
# log file.
-log4j.appender.console=org.apache.log4j.ConsoleAppender
-log4j.appender.console.target=System.err
-log4j.appender.console.layout=org.apache.log4j.PatternLayout
-log4j.appender.console.layout.ConversionPattern=%t: %m%n
+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%ex
# Ignore messages below warning level from Jetty, because it's a bit verbose
-log4j.logger.org.apache.livy.shaded=INFO
-log4j.logger.org.eclipse.jetty=WARN
+logger.jetty.name = org.sparkproject.jetty
+logger.jetty.level = warn
+logger.livy_shaded.name = org.apache.livy.shaded
+logger.livy_shaded.value = info
+logger.eclipse_jetty.name = org.eclipse.jetty
+logger.eclipse_jetty.value = warn
diff --git a/repl/src/test/scala/org/apache/livy/repl/ReplDriverSuite.scala
b/repl/src/test/scala/org/apache/livy/repl/ReplDriverSuite.scala
index da64577e..e2a753af 100644
--- a/repl/src/test/scala/org/apache/livy/repl/ReplDriverSuite.scala
+++ b/repl/src/test/scala/org/apache/livy/repl/ReplDriverSuite.scala
@@ -39,7 +39,7 @@ class ReplDriverSuite extends FunSuite with
LivyBaseUnitTestSuite {
test("start a repl session using the rsc") {
val client = new LivyClientBuilder()
- .setConf(SparkLauncher.DRIVER_MEMORY, "512m")
+ .setConf(SparkLauncher.DRIVER_MEMORY, "1024m")
.setConf(SparkLauncher.DRIVER_EXTRA_CLASSPATH,
sys.props("java.class.path"))
.setConf(SparkLauncher.EXECUTOR_EXTRA_CLASSPATH,
sys.props("java.class.path"))
.setConf(RSCConf.Entry.LIVY_JARS.key(), "")
diff --git a/rsc/pom.xml b/rsc/pom.xml
index 76f79de1..4c2ab144 100644
--- a/rsc/pom.xml
+++ b/rsc/pom.xml
@@ -87,8 +87,23 @@
<scope>provided</scope>
</dependency>
<dependency>
- <groupId>ch.qos.reload4j</groupId>
- <artifactId>reload4j</artifactId>
+ <groupId>org.apache.logging.log4j</groupId>
+ <artifactId>log4j-slf4j-impl</artifactId>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.logging.log4j</groupId>
+ <artifactId>log4j-api</artifactId>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.logging.log4j</groupId>
+ <artifactId>log4j-core</artifactId>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.logging.log4j</groupId>
+ <artifactId>log4j-1.2-api</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
@@ -118,7 +133,7 @@
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
- <artifactId>slf4j-reload4j</artifactId>
+ <artifactId>slf4j-api</artifactId>
<scope>provided</scope>
</dependency>
</dependencies>
diff --git a/rsc/src/test/resources/log4j.properties
b/rsc/src/test/resources/log4j.properties
deleted file mode 100644
index 6143ee57..00000000
--- a/rsc/src/test/resources/log4j.properties
+++ /dev/null
@@ -1,26 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements. See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License. You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-# Set everything to be logged to the file target/unit-tests.log
-log4j.rootCategory=WARN, console
-log4j.appender.console=org.apache.log4j.ConsoleAppender
-log4j.appender.console.target=System.err
-log4j.appender.console.layout=org.apache.log4j.PatternLayout
-log4j.appender.console.layout.ConversionPattern=%d{yy/MM/dd HH:mm:ss} %p
%c{1}: %m%n
-
-# Silence some verbose logs.
-log4j.logger.org.spark-project.jetty=WARN
diff --git a/client-http/src/test/resources/log4j.properties
b/rsc/src/test/resources/log4j2.properties
similarity index 63%
rename from client-http/src/test/resources/log4j.properties
rename to rsc/src/test/resources/log4j2.properties
index 9a1c19f2..09f50048 100644
--- a/client-http/src/test/resources/log4j.properties
+++ b/rsc/src/test/resources/log4j2.properties
@@ -16,22 +16,24 @@
#
# Set everything to be logged to the file target/unit-tests.log
-test.appender=file
-log4j.rootCategory=INFO, ${test.appender}
-log4j.appender.file=org.apache.log4j.FileAppender
-log4j.appender.file.append=true
-log4j.appender.file.file=target/unit-tests.log
-log4j.appender.file.layout=org.apache.log4j.PatternLayout
-log4j.appender.file.layout.ConversionPattern=%d{yy/MM/dd HH:mm:ss.SSS} %t %p
%c{1}: %m%n
+rootLogger.level = info
+rootLogger.appenderRef.file.ref = ${sys:test.appender:-File}
+
+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%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
# log file.
-log4j.appender.console=org.apache.log4j.ConsoleAppender
-log4j.appender.console.target=System.err
-log4j.appender.console.layout=org.apache.log4j.PatternLayout
-log4j.appender.console.layout.ConversionPattern=%t: %m%n
+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%ex
# Ignore messages below warning level from Jetty, because it's a bit verbose
-log4j.logger.org.apache.livy.shaded=INFO
-log4j.logger.org.eclipse.jetty=WARN
+logger.jetty.name = org.sparkproject.jetty
+logger.jetty.level = warn
diff --git a/scala-api/pom.xml b/scala-api/pom.xml
index 73d1e6ad..5eabc63f 100644
--- a/scala-api/pom.xml
+++ b/scala-api/pom.xml
@@ -90,7 +90,7 @@
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
- <artifactId>slf4j-reload4j</artifactId>
+ <artifactId>slf4j-api</artifactId>
<scope>provided</scope>
</dependency>
</dependencies>
diff --git a/repl/src/test/resources/log4j.properties
b/scala-api/src/test/resources/log4j2.properties
similarity index 63%
rename from repl/src/test/resources/log4j.properties
rename to scala-api/src/test/resources/log4j2.properties
index a54d27de..74fbe6d0 100644
--- a/repl/src/test/resources/log4j.properties
+++ b/scala-api/src/test/resources/log4j2.properties
@@ -16,22 +16,24 @@
#
# Set everything to be logged to the file target/unit-tests.log
-test.appender=file
-log4j.rootCategory=INFO, ${test.appender}
-log4j.appender.file=org.apache.log4j.FileAppender
-log4j.appender.file.append=true
-log4j.appender.file.file=target/unit-tests.log
-log4j.appender.file.layout=org.apache.log4j.PatternLayout
-log4j.appender.file.layout.ConversionPattern=%d{yy/MM/dd HH:mm:ss.SSS} %t %p
%c{1}: %m%n
+rootLogger.level = info
+rootLogger.appenderRef.file.ref = ${sys:test.appender:-File}
+
+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
# 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
# log file.
-log4j.appender.console=org.apache.log4j.ConsoleAppender
-log4j.appender.console.target=System.err
-log4j.appender.console.layout=org.apache.log4j.PatternLayout
-log4j.appender.console.layout.ConversionPattern=%t: %m%n
+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%ex
# Ignore messages below warning level from Jetty, because it's a bit verbose
-log4j.logger.org.spark-project.jetty=WARN
-org.spark-project.jetty.LEVEL=WARN
+logger.jetty.name = org.sparkproject.jetty
+logger.jetty.level = warn
diff --git
a/scala-api/src/test/scala/org/apache/livy/scalaapi/ScalaClientTest.scala
b/scala-api/src/test/scala/org/apache/livy/scalaapi/ScalaClientTest.scala
index a716f585..48c80d07 100644
--- a/scala-api/src/test/scala/org/apache/livy/scalaapi/ScalaClientTest.scala
+++ b/scala-api/src/test/scala/org/apache/livy/scalaapi/ScalaClientTest.scala
@@ -182,7 +182,7 @@ object ScalaClientTest {
} else {
val classpath: String = System.getProperty("java.class.path")
conf.put("spark.app.name", "SparkClientSuite Remote App")
- conf.put(SparkLauncher.DRIVER_MEMORY, "512m")
+ conf.put(SparkLauncher.DRIVER_MEMORY, "1024m")
conf.put(SparkLauncher.DRIVER_EXTRA_CLASSPATH, classpath)
conf.put(SparkLauncher.EXECUTOR_EXTRA_CLASSPATH, classpath)
}
diff --git a/server/pom.xml b/server/pom.xml
index 3408769e..82da034c 100644
--- a/server/pom.xml
+++ b/server/pom.xml
@@ -164,10 +164,18 @@
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
</exclusion>
+ <exclusion>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-api</artifactId>
+ </exclusion>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
</exclusion>
+ <exclusion>
+ <groupId>log4j</groupId>
+ <artifactId>log4j</artifactId>
+ </exclusion>
</exclusions>
</dependency>
@@ -231,7 +239,7 @@
<dependency>
<groupId>org.slf4j</groupId>
- <artifactId>slf4j-reload4j</artifactId>
+ <artifactId>slf4j-api</artifactId>
</dependency>
<dependency>
diff --git a/server/src/test/resources/log4j.properties
b/server/src/test/resources/log4j2.properties
similarity index 59%
rename from server/src/test/resources/log4j.properties
rename to server/src/test/resources/log4j2.properties
index 9195bd93..347f5dff 100644
--- a/server/src/test/resources/log4j.properties
+++ b/server/src/test/resources/log4j2.properties
@@ -16,24 +16,29 @@
#
# Set everything to be logged to the file target/unit-tests.log
-test.appender=file
-log4j.rootCategory=INFO, ${test.appender}
-log4j.appender.file=org.apache.log4j.FileAppender
-log4j.appender.file.append=true
-log4j.appender.file.file=target/unit-tests.log
-log4j.appender.file.layout=org.apache.log4j.PatternLayout
-log4j.appender.file.layout.ConversionPattern=%d{yy/MM/dd HH:mm:ss.SSS} %t %p
%c{1}: %m%n
+rootLogger.level = info
+rootLogger.appenderRef.file.ref = ${sys:test.appender:-File}
+
+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%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
# log file.
-log4j.appender.console=org.apache.log4j.ConsoleAppender
-log4j.appender.console.target=System.err
-log4j.appender.console.layout=org.apache.log4j.PatternLayout
-log4j.appender.console.layout.ConversionPattern=%t: %m%n
+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%ex
# Silence some noisy libraries.
-log4j.logger.org.apache.http=WARN
-log4j.logger.org.apache.spark=INFO
-log4j.logger.org.eclipse.jetty=WARN
-log4j.logger.org.spark-project.jetty=WARN
+logger.http.name = org.apache.http
+logger.http.level = warn
+logger.spark.name = org.apache.spark
+logger.spark.level = info
+logger.jetty.name = org.sparkproject.jetty
+logger.jetty.level = warn
+
diff --git a/thriftserver/client/pom.xml b/thriftserver/client/pom.xml
index 581c9aa0..de5c7b51 100644
--- a/thriftserver/client/pom.xml
+++ b/thriftserver/client/pom.xml
@@ -39,6 +39,18 @@
<groupId>org.apache.hbase</groupId>
<artifactId>*</artifactId>
</exclusion>
+ <exclusion>
+ <groupId>org.eclipse.jetty</groupId>
+ <artifactId>apache-jsp</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>log4j</groupId>
+ <artifactId>log4j</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-log4j12</artifactId>
+ </exclusion>
</exclusions>
</dependency>
<dependency>
diff --git a/thriftserver/server/pom.xml b/thriftserver/server/pom.xml
index ce628461..964e28a0 100644
--- a/thriftserver/server/pom.xml
+++ b/thriftserver/server/pom.xml
@@ -103,7 +103,7 @@
<dependency>
<groupId>org.slf4j</groupId>
- <artifactId>slf4j-reload4j</artifactId>
+ <artifactId>slf4j-api</artifactId>
</dependency>
<dependency>
<groupId>org.apache.thrift</groupId>
@@ -141,6 +141,10 @@
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-slf4j-impl</artifactId>
</exclusion>
+ <exclusion>
+ <groupId>log4j</groupId>
+ <artifactId>log4j</artifactId>
+ </exclusion>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
diff --git a/thriftserver/server/src/test/resources/log4j.properties
b/thriftserver/server/src/test/resources/log4j2.properties
similarity index 55%
rename from thriftserver/server/src/test/resources/log4j.properties
rename to thriftserver/server/src/test/resources/log4j2.properties
index 72bab705..5ed335a8 100644
--- a/thriftserver/server/src/test/resources/log4j.properties
+++ b/thriftserver/server/src/test/resources/log4j2.properties
@@ -16,24 +16,30 @@
#
# Set everything to be logged to the file target/unit-tests.log
-test.appender=file
-log4j.rootCategory=WARN, ${test.appender}
-log4j.appender.file=org.apache.log4j.FileAppender
-log4j.appender.file.append=true
-log4j.appender.file.file=target/unit-tests.log
-log4j.appender.file.layout=org.apache.log4j.PatternLayout
-log4j.appender.file.layout.ConversionPattern=%d{yy/MM/dd HH:mm:ss.SSS} %t %p
%c{1}: %m%n
+rootLogger.level = warn
+rootLogger.appenderRef.file.ref = ${sys:test.appender:-File}
+
+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%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
# log file.
-log4j.appender.console=org.apache.log4j.ConsoleAppender
-log4j.appender.console.target=System.err
-log4j.appender.console.layout=org.apache.log4j.PatternLayout
-log4j.appender.console.layout.ConversionPattern=%d{yy/MM/dd HH:mm:ss.SSS} %t:
%m%n
+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%ex
# Enable DEBUG logs for Livy classes (with some exceptions).
-log4j.logger.org.apache.livy=DEBUG
-log4j.logger.org.apache.livy.rsc=INFO
-log4j.logger.org.apache.livy.shaded=INFO
-log4j.logger.org.apache.livy.thriftserver.LivyCLIService=INFO
+logger.livy.name = org.apache.livy
+logger.livy.level = debug
+logger.livy_rsc.name = org.apache.livy.rsc
+logger.livy_rsc.level = info
+logger.livy_shaded.name = org.apache.livy.shaded
+logger.livy_shaded.level = info
+logger.livy_cli_service.name = org.apache.livy.thriftserver.LivyCLIService
+logger.livy_cli_service.level = info
diff --git a/thriftserver/session/pom.xml b/thriftserver/session/pom.xml
index 5dbde855..f54475ba 100644
--- a/thriftserver/session/pom.xml
+++ b/thriftserver/session/pom.xml
@@ -38,7 +38,7 @@
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
- <artifactId>slf4j-reload4j</artifactId>
+ <artifactId>slf4j-api</artifactId>
<scope>provided</scope>
</dependency>
<dependency>