2016-06-20 11 views
1

log4jを使用してログのフォーマットを変更するときに、spark(pyspark)にログインする際に問題が発生します。 log4j.propertiesでConversionPatternを編集しましたが、正しく動作していません。ログを書き込むとき、log4jは使用しようとしているパターンの最初の文字のみを使用します。一例として%replaceを使うことはできません。なぜなら、%rのみを取り上げ、%rの出力の後に 'eplace'を出力するからです。私は間違って何をしていますか?あなたが見ることができるように、それはにsuppossedあるようlog4j変換パターンによるPysparkロギングが機能しない

2016-06-20 10:06:59,095 hostname="" client_ip="127.0.0.1" service_name="" event_type="" event_status="" event_severity="INFO{WARN=medium,DEBUG=info,ERROR=high,TRACE=info,INFO=info,FATAL=critical}" event_description="[INFO] Spark - Slf4jLogger: Slf4jLogger started 

は、EVENT_SEVERITY後、それはレベルに代わるものではありません。ここで私は取得しています現在の出力があります。

以下は私のlog4j.propertiesファイルです。私はCentOSの7.私はEnhancedPatternLayoutを使用してみましたが

\# Set everything to be logged to the console 
log4j.rootCategory=INFO, 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{ISO8601} hostname="" client_ip="127.0.0.1" service_name="" event_type="" event_status="" event_severity="%p{WARN=medium,DEBUG=info,ERROR=high,TRACE=info,INFO=info,FATAL=critical}" event_description="[%p] Spark - %c{1}: %m%n 

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

\# SPARK-9183: Settings to avoid annoying messages when looking up nonexistent UDFs in SparkSQL with Hive support 
log4j.logger.org.apache.hadoop.hive.metastore.RetryingHMSHandler=FATAL 
log4j.logger.org.apache.hadoop.hive.ql.exec.FunctionRegistry=ERROR 

上のpython 2.7とスパーク1.6.1を実行していますが、何もしていないようでした。

答えて

2

Log4j 2で試しましたか? Log4j 2は積極的に維持され、Log4j 1.xは寿命末期です。

Log4j 1.2 APIへのアプリケーション呼び出しをLog4j 2実装に委譲するクラスパスに追加できるアダプタモジュールはlog4j-1.2-apiです。アプリケーションがLog4j 1.2の内部構造に依存している場合、アダプタでは不十分な場合があります。

Log4j 1.2形式の設定ファイルをサポートするために、最近Log4j 2で作業が開始されました。

個別にすべてのプロジェクトはLog4j 1.2 is broken in Java 9以降、Log4j 2に移行することをお勧めします。

Log4j 2へのSpark移行はin progressと思われます。

+1

私はSparkがLog4jを使用していることを理解してくれたので、これを受け入れています。私が見つけたSparkでLog4j 2を使用する簡単な方法はないので、Log4j 1でできることに合わせてログのフォーマットを変更しました。 – TH22

+0

アダプタモジュール、Java 9、および継続中のSpark移行作業に関する注意事項を更新しました。 –

関連する問題