gpt4 book ai didi

docker - 在 docker RTS 沙箱中使用 log4j 登录 Apache Apex

转载 作者:行者123 更新时间:2023-12-02 19:34:23 25 4
gpt4 key购买 nike

我想了解在使用官方 RTS Test Sandbox in docker 时如何在 Apache Apex 中使用 log4j 查看我的应用程序日志.
更具体地说,我想知道 Apex 在容器内存储应用程序特定日志文件的位置。

我正在运行最新的官方 docker 镜像,如下所述:https://hub.docker.com/r/datatorrent/rts/

使用 dtManage运行于 http://localhost:9090/ ,我成功上传了我的应用程序并启动了它。
Monitor选项卡我可以看到我的运算符(operator)正在接收和发送元组。
当我单击名为 AM logs 的蓝色按钮时它显示了 3 个日志文件的下拉列表,即:

  • AppMaster.sdterr
  • AppMaster.stdout
  • 顶点日志

  • 当我打开并搜索所有 3 个文件的日志时,我可以看到很多来自 apex 的日志,但没有打印我的自定义应用程序日志。
    我的日志记录代码如下所示:
    private static final Logger LOG = LoggerFactory.getLogger(Application.class);
    LOG.info("helloworld");

    Local Mode 中运行应用程序时,我的所有日​​志都在控制台内可见。

    在 properties.xml 中,我还启用了完整调试:
      <property>
    <name>dt.attr.DEBUG</name>
    <value>true</value>
    </property>

    有人可以帮我吗?

    最佳答案

    如果您将日志添加到 Application.java,您将在其中将运算符和流添加到 DAG。它实际上在 Apex 应用程序的启动时运行,并且日志可以是 dt-gateway.log 的一部分(可以在 ~/.dt/logs 中找到。)

    如果您在运算符(operator)中有日志记录语句,您将在各个容器日志目录中找到这些语句。 (从 RTS 中,您可以访问单个容器,并且可以找到与 Application Master 类似的下拉菜单以及容器特定日志)。

    默认情况下,应用程序日志目录可以在yarn指定的日志目录中找到(nodemanager属性yarn.nodemanage.log-dirs用作日志目录位置)。各个容器的日志目录将被命名为container_{$container_id}。与应用程序日志一起,这些目录还将包含该容器的标准错误、标准输出和系统日志。如果容器在不同的节点上运行,那么日志将在各个节点上。

    ${yarn.nodemanager.log-dirs}/application_${appid}

    或者您可以使用以下命令打开 yarn 日志聚合以查找日志。

     yarn logs -applicationId ${your-app-id} 

    您还可以将属性添加到属性文件以打开特定于您的应用程序的调试日志。
     <property>
    <name>dt.loggers.level</name>
    <value>your.application.package.*:DEBUG</value>
    </property>

    关于docker - 在 docker RTS 沙箱中使用 log4j 登录 Apache Apex,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47498059/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com