为什么hadoop中作业容器的stdout文件总是大小为0.
在java上
import org.apache.log4j.Logger;
static final Logger MAPLOGGER= Logger.getLogger(MyMap.class.getName());
MAPLOGGER.warn("key is :"+key);
运行jar后,生成3个文件
stderr,stdout,syslog
stderr包含
log4j:WARN No appenders could be found for logger (org.apache.hadoop.metrics2.impl.MetricsSystemImpl).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
究竟MAPLOGGER.warn("key is :"+key);
写日志?
答案 0 :(得分:0)
它现在没有在任何地方写它,因为你还没有设置log4j。
从WARN消息中的链接:
"为什么我会看到关于"没有找到记录器"和"请正确配置log4j"? 当无法找到默认配置文件log4j.properties和log4j.xml且应用程序未执行显式配置时,会发生这种情况。 log4j使用Thread.getContextClassLoader()。getResource()来定位默认配置文件,而不是直接检查文件系统。了解放置log4j.properties或log4j.xml的适当位置需要了解正在使用的类加载器的搜索策略。 log4j不提供默认配置,因为在某些环境中可能禁止输出到控制台或文件系统。"
因此,您需要设置log4j引擎,并将其整体提供给Java,或者在应用程序中明确声明它们的位置。