小编sbr*_*non的帖子

将日志记录中的应用程序日志与log4j中的Spark日志分开

我有一个使用Spark的Scala Maven项目,我正在尝试使用Logback实现日志记录.我正在将我的应用程序编译到jar,并部署到安装了Spark发行版的EC2实例.我的pom.xml包含Spark和Logback的依赖项,如下所示:

        <dependency>
            <groupId>ch.qos.logback</groupId>
            <artifactId>logback-classic</artifactId>
            <version>1.1.7</version>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>log4j-over-slf4j</artifactId>
            <version>1.7.7</version>
        </dependency>
        <dependency>
            <groupId>org.apache.spark</groupId>
            <artifactId>spark-core_${scala.binary.version}</artifactId>
            <version>${spark.version}</version>
            <exclusions>
                <exclusion>
                    <groupId>org.slf4j</groupId>
                    <artifactId>slf4j-log4j12</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>log4j</groupId>
                    <artifactId>log4j</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
Run Code Online (Sandbox Code Playgroud)

提交我的Spark应用程序时,我会在命令行上打印出slf4j绑定.如果我使用java执行jar代码,则绑定是Logback.但是,如果我使用Spark(即spark-submit),则绑定到log4j.

  val logger: Logger = LoggerFactory.getLogger(this.getClass)
  val sc: SparkContext = new SparkContext()
  val rdd = sc.textFile("myFile.txt")

  val slb: StaticLoggerBinder = StaticLoggerBinder.getSingleton
  System.out.println("Logger Instance: " + slb.getLoggerFactory)
  System.out.println("Logger Class Type: " + slb.getLoggerFactoryClassStr)
Run Code Online (Sandbox Code Playgroud)

产量

Logger Instance: org.slf4j.impl.Log4jLoggerFactory@a64e035
Logger Class Type: org.slf4j.impl.Log4jLoggerFactory
Run Code Online (Sandbox Code Playgroud)

据我了解,双方log4j-1.2.17.jarslf4j-log4j12-1.7.16.jar都在/ usr /本地/火花/罐,而火花,尽管在我的pom.xml排除最有可能引用这些罐子,因为如果我删除,我给在运行时一个ClassNotFoundException火花提交.

我的问题是:有没有办法使用Logback在我的应用程序中实现本机日志记录,同时保留Spark的内部日志记录功能.理想情况下,我想将Logback应用程序日志写入文件,并允许Spark日志仍显示在STDOUT.

logging scala jar maven apache-spark

10
推荐指数
2
解决办法
4724
查看次数

标签 统计

apache-spark ×1

jar ×1

logging ×1

maven ×1

scala ×1