Logging 如何从map/reduce应用程序登录?
我想使用Hadoop的Log4j基础设施从我的map/reduce应用程序中进行日志记录。我想我把一切都安排好了, 但我仍然无法指定所需的日志记录级别 默认情况下,Hadoop设置为在INFO级别进行日志记录。它的第一行 log4j.properties文件如下所示:Logging 如何从map/reduce应用程序登录?,logging,hadoop,mapreduce,Logging,Hadoop,Mapreduce,我想使用Hadoop的Log4j基础设施从我的map/reduce应用程序中进行日志记录。我想我把一切都安排好了, 但我仍然无法指定所需的日志记录级别 默认情况下,Hadoop设置为在INFO级别进行日志记录。它的第一行 log4j.properties文件如下所示: hadoop.root.logger=INFO,console package com.test; public class MyReducer<...> extends Reducer<...> { p
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");
// ... } }
-Dlog4j.configuration=PATH_TO_FILE
我有一个应用程序,其减速器如下所示:
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");
// ... } }
-Dlog4j.configuration=PATH_TO_FILE
我希望Hadoop系统在信息级别登录,但我的应用程序在调试级别登录,
这样我就可以在reducer任务的日志中看到“我的消息”。类加载器很可能在您修改的文件之前从Hadoop JAR中找到log4j.properties文件,因此您的更改不会产生任何影响。通过定义系统变量
log4j.configuration
,可以指定要使用哪个log4j配置文件,如下所示:
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");
// ... } }
-Dlog4j.configuration=PATH_TO_FILE