在hadoop中控制日志功能
如何控制hadoop中的日志功能?Hadoop使用默认的log4j.properties文件来控制日志。我的用例是控制类生成的日志 Hadoop守护进程,如JobTracker、TaskTracker、NameNode和DataNode守护进程使用各自主机节点的在hadoop中控制日志功能,hadoop,log4j,Hadoop,Log4j,如何控制hadoop中的日志功能?Hadoop使用默认的log4j.properties文件来控制日志。我的用例是控制类生成的日志 Hadoop守护进程,如JobTracker、TaskTracker、NameNode和DataNode守护进程使用各自主机节点的Hadoop conf目录中的log4j.properties文件。rootLogger设置为“INFO,console”,它将INFO级别的所有消息记录到控制台 我使用Oozie工作流触发hadoop作业。我试图通过设置-Dlog4j.
Hadoop conf目录中的log4j.properties文件。rootLogger设置为“INFO,console”,它将INFO级别的所有消息记录到控制台
我使用Oozie工作流触发hadoop作业。我试图通过设置-Dlog4j.configuration=path/to/log4j.properties
系统属性将自定义log4j.properties文件传递给作业,但该文件不起作用。尽管如此,它还是从默认属性中获取log4j属性
我不应该触摸默认的log4j.properties文件
我正在使用Oozie-v3.1.3-Cubating、hadoop-v0.20和cloudera CDH-v4.0.1
如何覆盖默认的log4j.properties文件??或
我如何控制我的类的日志???您使用自己的Log4J文件具体想要实现什么?我这样问是因为日志分布在集群中,但是通过将它们记录到rootLogger,您应该能够通过作业跟踪器(通过深入查看作业任务尝试)看到它们
如果您想利用滚动文件,那么以后很难检索这些文件(同样是因为它们分布在任务节点上)
如果要动态设置日志级别,这应该足够简单:
public static Logger log = Logger.getLogger(MyMapper.class);
@Override
protected void setup(Context context) throws IOException,
InterruptedException {
log.setLevel(Level.WARN);
}
如果您想添加自己的appender,那么您应该能够通过上述设置方法以编程方式(参见此)完成此操作。感谢您回复chris:-)这对我有很大帮助。是的,这很有帮助。。谢谢