3

I am using Scala to do some Spark job (my spark version is 2.1 running on Amazon AWS)

To be able to use log4j2 I have added this to my POM.XML

    <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-api-scala_2.11</artifactId>
        <version>11.0</version>
    </dependency>
    <!--log4j-api and log4j-core versions should be 2.8.2 it's not working for higher version at this moment-->
    <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-api</artifactId>
        <version>2.8.2</version>
    </dependency>
    <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-core</artifactId>
        <version>2.8.2</version>
    </dependency>

And I have this log4j2.xml in my resources

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
    <Appenders>
        <Console name="Console" target="SYSTEM_OUT">
            <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss.SSS}t [%t] %-5level %logger{36} - %msg%n"/>
        </Console>
    </Appenders>
    <Loggers>
        <Root level="INFO">
            <AppenderRef ref="Console"/>
        </Root>
    </Loggers>
</Configuration>

I want to change the level of the log for Spark to WARN because of this issue, but since spark using log4j (version 1 ) I can not control it in my log4j2.xml file. Any workaround?

I have also followed other solution by adding following code but still, it didn't work

import org.apache.log4j.{Level, LogManager, Logger}

val ss = SparkSession.builder().getOrCreate()
ss.sparkContext.setLogLevel("WARN")
LogManager.getLogger("org").setLevel(Level.WARN)
LogManager.getLogger("akka").setLevel(Level.WARN)
Logger.getLogger("org").setLevel(Level.WARN)
Logger.getLogger("akka").setLevel(Level.WARN)
Logger.getRootLogger().setLevel(Level.WARN)
Am1rr3zA
  • 7,115
  • 18
  • 83
  • 125

0 Answers0