我想使用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任务的日志中。
答案 0 :(得分:0)
类加载器很可能是在您修改之前从Hadoop jar中找到log4j.properties文件,因此您的更改没有任何效果。您可以通过定义系统变量log4j.configuration
来指定要使用的log4j配置文件,如下所示:
-Dlog4j.configuration=PATH_TO_FILE