Merge pull request #31 from arpitbhardwaj/log4j-upgrade
DATAFU-162: Upgraded to log4j2 in datafu-spark
diff --git a/datafu-spark/build.gradle b/datafu-spark/build.gradle
index 5740f02..6b86920 100644
--- a/datafu-spark/build.gradle
+++ b/datafu-spark/build.gradle
@@ -55,10 +55,13 @@
}
dependencies {
+ compile "org.apache.logging.log4j:log4j-api:$log4j2Version"
compile "org.scala-lang:scala-library:$scalaVersion"
- compile "org.apache.spark:spark-core_" + scalaCompatVersion + ":" + sparkVersion
+ compile ("org.apache.spark:spark-core_" + scalaCompatVersion + ":" + sparkVersion)
compile "org.apache.spark:spark-hive_" + scalaCompatVersion + ":" + sparkVersion
+ testCompile "org.apache.logging.log4j:log4j-1.2-api:$log4j2Version"
+ testCompile "org.apache.logging.log4j:log4j-slf4j-impl:$log4j2Version"
testCompile "com.holdenkarau:spark-testing-base_" + scalaCompatVersion + ":" + sparkVersion + "_" + sparkTestingBaseVersion
testCompile "org.scalatest:scalatest_" + scalaCompatVersion + ":" + scalaTestVersion
}
@@ -140,7 +143,6 @@
tasks.eclipse.dependsOn('downloadPy4js')
tasks.compileTestScala.dependsOn('downloadPy4js')
-
test {
systemProperty 'datafu.jar.dir', file('build/libs')
systemProperty 'datafu.data.dir', file('data')
@@ -149,3 +151,9 @@
maxHeapSize = "2G"
}
+
+configurations.all {
+ exclude group: 'log4j', module:'log4j'
+ exclude group: 'log4j', module:'apache-log4j-extras'
+ exclude group: 'org.slf4j', module:'slf4j-log4j12'
+}
\ No newline at end of file
diff --git a/datafu-spark/src/main/scala/datafu/spark/PythonPathsManager.scala b/datafu-spark/src/main/scala/datafu/spark/PythonPathsManager.scala
index 26377b8..b96bde7 100644
--- a/datafu-spark/src/main/scala/datafu/spark/PythonPathsManager.scala
+++ b/datafu-spark/src/main/scala/datafu/spark/PythonPathsManager.scala
@@ -23,10 +23,8 @@
import java.nio.file.Paths
import java.util
import java.util.{MissingResourceException, ServiceLoader}
-
import scala.collection.JavaConverters._
-
-import org.apache.log4j.Logger
+import org.apache.logging.log4j.{LogManager, Logger}
/**
@@ -70,7 +68,7 @@
case class ResolvedResource(resource: PythonResource,
resolvedLocation: String)
- private val logger: Logger = Logger.getLogger(getClass)
+ private val logger: Logger = LogManager.getLogger(getClass)
val resources: Seq[ResolvedResource] =
ServiceLoader
diff --git a/datafu-spark/src/main/scala/datafu/spark/ScalaPythonBridge.scala b/datafu-spark/src/main/scala/datafu/spark/ScalaPythonBridge.scala
index 1acacaa..a641b0d 100644
--- a/datafu-spark/src/main/scala/datafu/spark/ScalaPythonBridge.scala
+++ b/datafu-spark/src/main/scala/datafu/spark/ScalaPythonBridge.scala
@@ -18,12 +18,12 @@
*/
package datafu.spark
+import org.apache.logging.log4j.LogManager
+
import java.io._
import java.net.URL
import java.nio.file.Files
import java.util.UUID
-
-import org.slf4j.LoggerFactory
import org.apache.spark.SparkConf
import org.apache.spark.api.java.JavaSparkContext
import org.apache.spark.datafu.deploy.SparkPythonRunner
@@ -40,7 +40,7 @@
*/
case class ScalaPythonBridgeRunner(extraPath: String = "") {
- val logger = LoggerFactory.getLogger(this.getClass)
+ val logger = LogManager.getLogger(this.getClass)
// for the bridge we take the full resolved location,
// since this runs on the driver where the files are local:
logger.info("constructing PYTHONPATH")
@@ -134,7 +134,7 @@
*/
object ResourceCloning {
- private val logger = LoggerFactory.getLogger(this.getClass)
+ private val logger = LogManager.getLogger(this.getClass)
val uuid = UUID.randomUUID().toString.substring(6)
val outputTempDir = new File(System.getProperty("java.io.tmpdir"),
diff --git a/datafu-spark/src/main/scala/spark/utils/overwrites/SparkPythonRunner.scala b/datafu-spark/src/main/scala/spark/utils/overwrites/SparkPythonRunner.scala
index 36e8615..14b4f02 100644
--- a/datafu-spark/src/main/scala/spark/utils/overwrites/SparkPythonRunner.scala
+++ b/datafu-spark/src/main/scala/spark/utils/overwrites/SparkPythonRunner.scala
@@ -17,11 +17,10 @@
package org.apache.spark.datafu.deploy
import java.io._
-
import scala.collection.JavaConverters._
import scala.collection.mutable.ArrayBuffer
import datafu.spark.ScalaPythonBridge
-import org.apache.log4j.Logger
+import org.apache.logging.log4j.{LogManager, Logger}
import org.apache.spark.api.python.PythonUtils
import org.apache.spark.deploy.PythonRunner
import org.apache.spark.util.Utils
@@ -40,7 +39,7 @@
case class SparkPythonRunner(pyPaths: String,
otherArgs: Array[String] = Array()) {
- val logger: Logger = Logger.getLogger(getClass)
+ val logger: Logger = LogManager.getLogger(getClass)
val (reader, writer, process) = initPythonEnv()
def runPyFile(pythonFile: String): String = {
diff --git a/datafu-spark/src/test/resources/log4j.properties b/datafu-spark/src/test/resources/log4j2.properties
similarity index 61%
rename from datafu-spark/src/test/resources/log4j.properties
rename to datafu-spark/src/test/resources/log4j2.properties
index bc52d61..519088c 100644
--- a/datafu-spark/src/test/resources/log4j.properties
+++ b/datafu-spark/src/test/resources/log4j2.properties
@@ -15,8 +15,19 @@
# specific language governing permissions and limitations
# under the License.
-log4j.rootCategory=WARN, stdout
+# Extra logging related to initialization of Log4j
+# Set to debug or trace if log4j initialization is failing
+status = warn
+# Name of the configuration
+name = ConsoleLogConfigDemo
-log4j.appender.stdout=org.apache.log4j.ConsoleAppender
-log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
-log4j.appender.stdout.layout.ConversionPattern=%d %5p %c{3} - %m%n
+# Console appender configuration
+appender.console.type = Console
+appender.console.name = consoleLogger
+appender.console.layout.type = PatternLayout
+appender.console.layout.pattern = %d %5p %c{3} - %m%n
+
+# Root logger level
+rootLogger.level = warn
+# Root logger referring to console appender
+rootLogger.appenderRef.stdout.ref = consoleLogger
diff --git a/datafu-spark/src/test/scala/datafu/spark/TestScalaPythonBridge.scala b/datafu-spark/src/test/scala/datafu/spark/TestScalaPythonBridge.scala
index b67386a..b529145 100644
--- a/datafu-spark/src/test/scala/datafu/spark/TestScalaPythonBridge.scala
+++ b/datafu-spark/src/test/scala/datafu/spark/TestScalaPythonBridge.scala
@@ -19,22 +19,19 @@
package datafu.spark
import java.io.File
-
import scala.util.Try
-
import com.holdenkarau.spark.testing.Utils
+import org.apache.logging.log4j.LogManager
import org.junit._
import org.junit.runner.RunWith
import org.scalatest.FunSuite
import org.scalatest.junit.JUnitRunner
-import org.slf4j.LoggerFactory
-
import org.apache.spark.SparkConf
import org.apache.spark.sql.SparkSession
object TestScalaPythonBridge {
- val logger = LoggerFactory.getLogger(this.getClass)
+ val logger = LogManager.getLogger(this.getClass)
def getNewRunner(): ScalaPythonBridgeRunner = {
val runner = ScalaPythonBridgeRunner()
diff --git a/datafu-spark/src/test/scala/datafu/spark/TestSparkUDAFs.scala b/datafu-spark/src/test/scala/datafu/spark/TestSparkUDAFs.scala
index aadd059..37949c3 100644
--- a/datafu-spark/src/test/scala/datafu/spark/TestSparkUDAFs.scala
+++ b/datafu-spark/src/test/scala/datafu/spark/TestSparkUDAFs.scala
@@ -19,11 +19,11 @@
package datafu.spark
import com.holdenkarau.spark.testing.DataFrameSuiteBase
+import org.apache.logging.log4j.LogManager
import org.junit.Assert
import org.junit.runner.RunWith
import org.scalatest.FunSuite
import org.scalatest.junit.JUnitRunner
-import org.slf4j.LoggerFactory
import org.apache.spark.SparkConf
import org.apache.spark.sql.DataFrame
import org.apache.spark.sql.Row
@@ -45,7 +45,7 @@
override def conf: SparkConf =
super.conf.set(CATALOG_IMPLEMENTATION.key, "hive")
- val logger = LoggerFactory.getLogger(this.getClass)
+ val logger = LogManager.getLogger(this.getClass)
val inputSchema = List(
StructField("col_grp", StringType, true),
diff --git a/gradle/dependency-versions.gradle b/gradle/dependency-versions.gradle
index 22bb7d6..091b37d 100644
--- a/gradle/dependency-versions.gradle
+++ b/gradle/dependency-versions.gradle
@@ -27,6 +27,7 @@
guavaVersion="20.0"
jodaTimeVersion="1.6"
log4jVersion="1.2.17"
+ log4j2Version="2.19.0"
mavenVersion="2.1.3"
jlineVersion="0.9.94"
pigVersion="0.14.0"