我写了一个map reduce代码,我想调试它。
为此,我不能使用标准输出,因为hadoop平台不会将其打印到屏幕上,除非发生错误。
相反,我尝试使用logger来创建日志文件。
我使用一个处理程序将其拆分为两个文件,不幸的是“severe”日志文件是空的,而常规日志文件只记录主线程中发生的事情,而不记录map reduce函数中发生的事情。
问题如下:
hadoop和日志文件有问题吗?还是我的日志配置有问题?如果是这样的话,怎么纠正呢。
日志配置代码:我对整个应用程序使用一个记录器(这次是根记录器)
public static Logger configureLogging()
{
try
{
logger=Logger.getLogger("");
//FileSystem hdfs=FileSystem.get(URI.create(Misc.S3FS),getConfiguration());
logger.setLevel(Level.ALL);
//StreamHandler handler=new StreamHandler(hdfs.create(new Path(Misc.LOGS_PATH+"mylog.log")),new SimpleFormatter());
FileHandler handler=new FileHandler(Misc.LOGS_PATH+"mylog.xml",true);
FileHandler severeHandler=new FileHandler(Misc.LOGS_PATH+"mylogSevere.xml",true);
severeHandler.setLevel(Level.INFO);
logger.addHandler(handler);
logger.addHandler(severeHandler);
}
catch (Exception e)
{
e.printStackTrace();
}
return logger;
}
1条答案
按热度按时间agyaoht71#
hadoop附带了预配置的log4j。只需导入两个类:
现在,您可以在Map器、还原器和任何需要的地方定义记录器:
并记录所需内容:
消息将在作业执行期间显示。您可以使用