2013-01-07 10 views
6

ハイドープのロギング機能を制御する方法は? Hadoopはログを制御するためにデフォルトのlog4j.propertiesファイルを使用します。私の使用事例は、クラスによって生成されたログを制御することです。 JobTrackerTaskTracker名前ノードデータノードデーモンプロセスのようなハイドープのロギング機能の制御

Hadoopのデーモンは、それぞれのホストノードのhadoop-conf-directoryからlog4j.propertiesファイルを使用します。 rootLoggerは"INFO、console"に設定され、すべてのメッセージをレベルINFOにコンソールに記録します。

私はOozie Workflowを使用してハープ・ジョブを起動します。 -Dlog4j.configuration=path/to/log4j.propertiesシステムプロパティを設定してカスタムlog4j.propertiesファイルをジョブに渡そうとしましたが、動作しません。それでも、デフォルトのものからlog4jのプロパティが必要です。

私はデフォルトのlog4j.propertiesファイルに触れてはいけません。

私はOozie-v3.1.3-incubating、hadoop-v0.20およびcloudera CDH-v4.0.1を使用しています。

デフォルトのlog4j.propertiesファイルを変更するにはどうすればよいですか?または クラスのログを制御するにはどうすればよいですか?

答えて

10

具体的には、独自のLog4Jファイルで達成しようとしていることは何ですか?ログはクラスタ全体に分散されているので、rootLoggerにログを記録することで、(Jobタスクの試行を掘り下げて)ジョブトラッカーからログを見ることができるはずです。

ローリングファイルを利用する場合は、後でこれらのファイルを取得するのが難しくなります(タスクノード全体に分散されているため)。

あなたが動的にログレベルを設定したい場合は、これは十分に単純でなければなりません:

public static Logger log = Logger.getLogger(MyMapper.class); 

@Override 
protected void setup(Context context) throws IOException, 
     InterruptedException { 
    log.setLevel(Level.WARN); 
} 

あなたがアペンダを所有追加したい場合は、あなたがプログラムでこれを行うことができるはずです(このSO Questionを参照)、上記のようなセットアップ方法で。

+0

お返事ありがとうございましたchris :-) それは私を助けてくれます。 – Suresh

+0

ええ、それは参考になります..ありがとう –

関連する問題