如何从我的map / reduce应用程序登录?

时间:2013-10-02 01:35:30

标签: logging hadoop mapreduce

我想使用Hadoop的Log4j基础架构从我的map / reduce应用程序进行日志记录。我想我已经正确设置了一切, 但我仍然无法指定我想要的日志记录级别。

默认情况下,Hadoop设置为登录级别 INFO 。它的第一行 log4j.properties文件如下所示:

hadoop.root.logger=INFO,console

我有一个应用程序,其reducer如下所示:

package com.test; public class MyReducer<...> extends Reducer<...> { private static Logger logger = Logger.getLogger(MyReducer.class.getName());
    //...    protected void reduce(...) {
       logger.debug("My message");
    //   ...    } }

我已将以下行添加到Hadoop log4j.properties文件中:

log4j.logger.com.test.MyReducer=DEBUG

我希望Hadoop系统能够登录INFO级别,但我的应用程序会在DEBUG级别登录, 所以我看到&#34;我的消息&#34;在reducer任务的日志中。

1 个答案:

答案 0 :(得分:0)

类加载器很可能是在您修改之前从Hadoop jar中找到log4j.properties文件,因此您的更改没有任何效果。您可以通过定义系统变量log4j.configuration来指定要使用的log4j配置文件,如下所示:

-Dlog4j.configuration=PATH_TO_FILE