Apache spark Spark不接受log4j2.xml

Apache spark Spark不接受log4j2.xml,apache-spark,spark-streaming,Apache Spark,Spark Streaming,我尝试使用log4j2.xml代替spark的默认log4j日志记录 我的Log4j2.xml如下 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE log4j:configuration PUBLIC "-//APACHE//DTD LOG4J 1.2//EN" "http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/xml/doc-files/log4j

我尝试使用log4j2.xml代替spark的默认log4j日志记录

我的Log4j2.xml如下

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE log4j:configuration PUBLIC
  "-//APACHE//DTD LOG4J 1.2//EN" "http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/xml/doc-files/log4j.dtd">

<Configuration status="WARN" name="MyApp" monitorInterval="30">

        <Properties>
            <Property name="appName">MyApp</Property>
            <Property name="appenderPatternLayout">%d{yyyy-MM-dd HH:mm:ss} %c{1} [%p] %m%n</Property>
            <Property name="fileName">/app/vodip/logs/${appName}.log</Property>
        </Properties>

        <Appenders>
            <RollingFile name="RollingFile"
                         fileName="${fileName}"
                         filePattern="a1
                         ${appName}-%d{yyyy-MM-dd-HH}-%i.log">
                <PatternLayout>
                    <Pattern>${appenderPatternLayout}</Pattern>
                </PatternLayout>
                <Policies>
                    <TimeBasedTriggeringPolicy interval="4" modulate="true"/>
                    <SizeBasedTriggeringPolicy size="250 MB"/>
                </Policies>
            </RollingFile>
        </Appenders>


      <Loggers>
          <Logger name="xyz.abcs.MyApp" level="debug" additivity="false">
              <AppenderRef ref="RollingFile"/>
          </Logger>
          <Root level="debug">
              <AppenderRef ref="RollingFile"/>
          </Root>
      </Loggers>

    </Configuration>
我在我的工作日志中看到了这一点。这意味着我的日志没有使用log4j2功能

log4j:WARN可继续解析错误10和第78列log4j:WARN 文档根元素“配置”,必须与DOCTYPE根元素“null”匹配。 log4j:WARN可继续解析错误10和第78列log4j:WARN 文档无效:未找到语法。log4j:错误DOM元素为- 不是一个元素。使用Spark的默认log4j 档案:org/apache/spark/log4j-defaults.properties


有人能告诉我配置有什么问题吗?

您是否也将log4j文件放在项目的资源文件夹中,如果它将在那里,然后将其从那里删除,对于使用log4j为驱动程序和执行程序记录spark应用程序,您还应该为驱动程序和执行程序提供log4j路径,如下所示

spark-submit --class MAIN_CLASS --driver-java-options "-Dlog4j.configuration=file:PATH_OF_LOG4J" --conf "spark.executor.extraJavaOptions=-Dlog4j.configuration=file:PATH_OF_LOG4J" --master MASTER_IP:PORT JAR_PATH

您也可以参考此博客了解更多详细信息

命令行中至少有一个错误会导致此错误


-Dlog4j.configuration=。
一定是

-Dlog4j.configurationFile=。
使用log4j2时


log4j.configuration
由旧的log4j解析,它显然不理解新的配置格式并抛出解析错误

我认为您缺少
我在代码中添加了这一行。但它给出了log4j:WARN可继续解析错误13和第78列log4j:WARN文档根元素“Configuration”,必须与DOCTYPE root“log4j:Configuration”匹配。log4j:WARN Continuable解析错误13和第78列log4j:WARN元素类型“Configuration”必须声明。log4j:WARN Continuable解析错误15和第17列log4j2似乎不是spark check的好友,如果您还没有尝试过此操作,但仍然收到错误和警告log4j:WARN Continuable解析错误42和第43列log4j:WARN元素类型“AppenderRef”必须声明。log4j:错误DOM元素是-不是元素。使用Spark的默认log4j配置文件:org/apache/Spark/log4j-defaults.properties
spark-submit --class MAIN_CLASS --driver-java-options "-Dlog4j.configuration=file:PATH_OF_LOG4J" --conf "spark.executor.extraJavaOptions=-Dlog4j.configuration=file:PATH_OF_LOG4J" --master MASTER_IP:PORT JAR_PATH