【Spark七十二】Sparkのログ構成

2496 ワード

Spark Streamingをテストするとき、大量のログがコンソールに表示され、Spark Streamingプログラムコードの出力結果の表示に影響します(コードではprintlnで出力をコンソールに印刷します)、Sparkのログ構成を変更することで、Spark Streamingにそのログをconsoleに表示させないようにすることができます
 
Sparkのconfディレクトリの下で、log 4 j.properties.templateをlog 4 jに変更する.properties、元の内容は以下の通りです.
 
log4j.rootCategory=WARN, console
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.target=System.err
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=%d{yy/MM/dd HH:mm:ss} %p %c{1}: %m%n

# Settings to quiet third party logs that are too verbose
log4j.logger.org.eclipse.jetty=WARN
log4j.logger.org.eclipse.jetty.util.component.AbstractLifeCycle=ERROR
log4j.logger.org.apache.spark.repl.SparkIMain$exprTyper=INFO
log4j.logger.org.apache.spark.repl.SparkILoop$SparkILoopInterpreter=INFO

log 4 j.rootCategory=INFO、consoleをlog 4 jに変更する.rootCategory=WARN、consoleはSparkがINFOレベルのログをコンソールに打つことを抑制します.全面的な情報を表示する場合はINFOをDEBUGに変更します.
 
 
コードのprintlnをコンソールに印刷する一方で、Spark Streaming自体が出力するログを保持する場合は、ログファイルに出力できます.
 
 
log4j.rootCategory=INFO, console,FILE
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.target=System.err
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=%d{yy/MM/dd HH:mm:ss} %p %c{1}: %m%n

# Settings to quiet third party logs that are too verbose
log4j.logger.org.eclipse.jetty=WARN
log4j.logger.org.eclipse.jetty.util.component.AbstractLifeCycle=ERROR
log4j.logger.org.apache.spark.repl.SparkIMain$exprTyper=INFO
log4j.logger.org.apache.spark.repl.SparkILoop$SparkILoopInterpreter=INFO

log4j.appender.FILE=org.apache.log4j.DailyRollingFileAppender
log4j.appender.FILE.Threshold=DEBUG
log4j.appender.FILE.file=/home/hadoop/spark.log
log4j.appender.FILE.DatePattern='.'yyyy-MM-dd
log4j.appender.FILE.layout=org.apache.log4j.PatternLayout
log4j.appender.FILE.layout.ConversionPattern=[%-5p] [%d{yyyy-MM-dd HH:mm:ss}] [%C{1}:%M:%L] %m%n
# spark
log4j.logger.org.apache.spark=INFO

 
上記の操作では、sparkのログはコンソールに印刷される一方、/home/hadoop/sparkに書き込まれる.logに当たって、これはログの継承の特性で、後で更に改善して、現在log 4 j.rootCategory=INFO,console,FILEをlog 4 jに変更.rootCategory=INFO、FILEでOK