当前位置: 首页 > 知识库问答 >
问题:

在hadoop中控制日志功能

易品
2023-03-14

如何控制hadoop中的日志功能?Hadoop使用默认的log4j.properties文件来控制日志。我的用例是控制我的类生成的日志。

Hadoop守护进程(如JobTracker、TaskTracker、NameNode和DataNode守护进程)使用log4j。属性文件来自各自主机节点的hadoop conf目录。rootLogger设置为“INFO,console”,它将所有信息级别的消息记录到控制台。

我使用Oozie Workflow触发hadoop作业。我尝试通过设置-Dlog4j.configuration=path/to/log4j.properties系统属性将自定义log4j.properties文件传递给作业,但它不起作用。尽管如此,它还是从默认属性中获取log4j属性。

我不应该碰默认的log4j。属性文件。

我用的是Oozie-v3。1.3-孵化,hadoop-v0。20和cloudera CDH-v4。0.1.

如何覆盖默认的log4j。属性文件??或者我如何控制我的类的日志??

共有1个答案

赫连昕
2023-03-14

你想用自己的Log4J文件具体实现什么?我这样问是因为日志分布在集群中,但是通过将它们记录到rootLogger,您应该能够通过作业跟踪器(通过深入查看作业任务尝试)看到它们。

如果你想使用滚动文件,那么你以后很难检索这些文件(同样是因为它们分布在你的任务节点上)。

如果要动态设置日志级别,这应该足够简单:

public static Logger log = Logger.getLogger(MyMapper.class);

@Override
protected void setup(Context context) throws IOException,
        InterruptedException {
    log.setLevel(Level.WARN);
}

如果您想添加自己的应用程序,那么您应该能够在如上所述的设置方法中以编程方式完成此操作(请参见此SO问题)。

 类似资料:
  • 嘿,我想知道控制台中的输出是否可能与文件输出中的输出相同。 这是我的XML配置。 滚动文件中的输出 在控制台中为空。但是现在如果我改变 到"追踪" 将是2,4,6。。。。在控制台和我的文件中,它将是1,3,5,7。。。这很容易理解。 但是我的问题是,我们如何在控制台和文件中同时拥有相同的日志级(跟踪)输出?(添加包名称和级别的标签不起作用) 与此问题相关: log4j2 xml配置-登录到文件和控

  • 我在firebase云功能中遇到了一个情况,其中只有第一个控制台。执行日志或firestore更新语句。 我还有其他类似的函数,在处理响应的方式上略有不同,但这没有任何问题 我已经检查了谷歌云控制台/Firebase控制台等,源代码似乎已经正确上传 我看到了另一个与这种情况相反的帖子。有人知道为什么会这样吗?

  • 问题内容: 有没有一种方法可以在Eclipse控制台中为部分日志着色。我知道我可以发送到错误流和标准流并以不同的方式给它们上色,但是我更希望在ANSI转义码(或其他HTML格式)行中查找,可以在其中将颜色嵌入字符串中以对其进行着色日志。 它肯定会有助于使重要的部分脱颖而出,而无需诉诸怪异的布局,而是将布局保持在log4j设置中 这是我正在寻找的示例: [INFO]网格已完成....... 否 如果

  • 控制台日志是一个强大的方法,用来检查您的页面或应用程序。让我们从console.log()开始,探索其他高级用法。 TL;DR 使用console.log()进行基本日志记录 使用console.erroe()和console.warn()获取醒目的内容 使用console.group()和console.groupEnd()来分组相关消息,避免混乱 使用console.assert()显示条件语

  • 问题内容: 我想在量角器测试中输出div的文本,到目前为止,我有: 但这输出 我尝试了“ toString()”,结果相同。 有没有办法将文本输出到控制台? 问题答案: 和其他大多数量角器方法都返回承诺。您想将您的陈述放入承诺解决方案中: 使用新的量角器语法: