我想使用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级别进行日志记录,这样我就可以在reducer任务的日志中看到“我的消息”。
1条答案
按热度按时间lvjbypge1#
类加载器很可能在您修改的文件之前从hadoopjar中找到log4j.properties文件,因此您的更改不会产生任何影响。您可以通过定义系统变量来指定要使用的log4j配置文件
log4j.configuration
,如下所示: