2016-10-19 5 views
3

Ich versuche, log4j2.xml anstelle der Standard-Log4j-Protokollierung von Spark zu verwenden.Spark nicht log4j2.xml

Mein Log4j2.xml ist als unten

<?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> 

I Orte meine log4j2.xml in Funken/conf-Ordner auf allen Knoten haben und neu gestartet Funken und legte Funken Programme wie unten.

spark-submit --master spark://xyzzz.net:7077 \ 
--class abcd.myclass \ 
--deploy-mode cluster --executor-memory 2G --total-executor-cores 4 \ 
--conf spark.network.timeout=150 \ 
--files /app/spark/spark-1.6.1-bin-hadoop2.6/conf/log4j2.xml \ 
--conf "spark.executor.extraJavaOptions=-Dlog4j.configuration=log4j2.xml" \ 
--driver-java-options "-Dlog4j.configuration=file:/app/spark/spark-1.6.1-bin-hadoop2.6/conf/log4j2.xml" \ 
/app/spark/my.jar 

Ich sehe dies in meinem Arbeiter stderr log. Das bedeutet, dass meine Protokolle keine log4j2-Funktionalität verwenden.

log4j: WARN Kontinuierbare Parsingfehler 10 und Spalte 78 log4j: WARN Document Stammelement "Konfiguration", muss DOCTYPE root "null" entsprechen. log4j: WARN Continable Parsing Fehler 10 und Spalte 78 Log4j: WARN Dokument ist ungültig: keine Grammatik gefunden. log4j: ERROR DOM Element ist - kein Element. Mit Spark Standard log4j Profil: org/Apache/Funken/log4j-defaults.properties

Kann jemand raten, was mit falsch konfiguriert ist ???

+0

Ich glaube, Sie fehlen ' VladoDemcak

+0

Ich habe diese Zeile in Code hinzugefügt. Aber es gab log4j: WARN Continable Parsing Fehler 13 und Spalte 78 log4j: WARN Dokument Root-Element" Konfiguration ", muss übereinstimmen mit DOCTYPE-Stamm" log4j: Konfiguration ". log4j: WARN Continable parsing error 13 und column 78 log4j: WARN Elementtyp "Configuration" muss deklariert werden. log4j: WARN Continuable Parsing Fehler 15 und Spalte 17 – AKC

+0

scheint log4j2 ist nicht Freund mit Funken überprüfen [this] (https://issues.apache.org/jira/browse/SPARK-6305?jql=project%20%3D% 20Spark% 20AND% 20text% 20 ~% 20log4j2) und [dies] (https://github.com/apache/spark/pull/4998#issuecomment-80944189) Wenn Sie nicht bereits – VladoDemcak

Antwort

1

setzen Sie auch log4j-Datei in Ressourcenordner Ihres Projekts, wenn es dort sein wird, dann entfernen Sie es von dort und für die Protokollierung Spark-Anwendung mit log4j für Treiber und Executer sollten Sie Pfad von log4j für Treiber und Executor dafür bereitstellen wie folgt

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 

Sie auch in diesem Blog, um weitere Informationen https://blog.knoldus.com/2016/02/23/logging-spark-application-on-standalone-cluster/

+0

Ich habe das versucht, aber weiterhin Fehler empfangen & Warnungen log4j: WARN Continable parsing error 42 und spalte 43 log4j: WARN Elementtyp "AppenderRef" muss deklariert werden. log4j: ERROR DOM-Element ist - kein -Element. Verwenden des Standard-Log4j-Profils von Spark: org/apache/spark/log4j-defaults.properties – AKC

+0

Können Sie den Inhalt von log4j anzeigen? –

0

mindestens ein Fehler in der Befehlszeile

zu diesem Fehler führen kann verweisen tatsächlich muss -Dlog4j.configurationFile=. . . sein, wenn log4j2

log4j.configuration analysiert wird von alten log4j verwenden, die offensichtlich keine neuen Konfigurationsformat verstehen das und wirft Parsingfehler

Verwandte Themen