2

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

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

hadoop.root.logger=INFO,console

我有一个应用程序,其减速器如下所示:

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 级别记录,以便我在减速器任务的日志中看到“我的消息”。

4

1 回答 1

0

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

-Dlog4j.configuration=PATH_TO_FILE
于 2013-10-02T01:50:54.620 回答