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

报表门户不将日志附加到报表

冯永长
2023-03-14

我正在研究一种方法,将报告日志发送到报告门户,并附上屏幕截图。我正在使用XmlHttpRequest模块访问报表门户日志endpoint。这是我的密码。但是这段代码不起作用,相反,我得到了一条“json\u请求\u部分丢失”的响应消息。我做错了什么,我是按照这里的文件做的

  try {
    const request = new XMLHttpRequest();

    const body = {
    itemUuid: 'gsgasgh-dsjdbbdjsbd',
    launchUuid: 'hshu1qqqqjjhdh-ddjdh',
    time: '1555677888',
    message: 'failed',
    level: 40000,
    file: {
      name: 'screenshot.png',
    },

  };

    request.open('POST', `http://rp.com/my_project/log`, false); // `false` makes the request synchronous
    request.setRequestHeader('Content-Type', 'multipart/form-data');
    request.setRequestHeader('Authorization', `Bearer ${config.token}`);
    request.send(JSON.stringify(body));

    if (request.status >= 200 && request.status <= 299) {
      const { responseText } = request;
      console.log(responseText);
    } else {
      console.log(`Unexpected Response Returned: ${request.responseText}`);
    }
  } catch (error) {
    console.log(error.message);
  }
};

共有1个答案

薛博艺
2023-03-14

发送二进制数据有点复杂,您必须以特殊格式形成多部分请求。该格式在本指南中有很好的描述。请注意,请求的第一部分应该包含JSON,其中包含来自多部分的其他部分的日志消息和文件名称。此外,ReportPortal的团队已经实现了Javascript。你也可能会发现这个片段很有帮助:

    buildMultiPartStream(jsonPart, filePart, boundary) {
    const eol = "\r\n";
    const bx = `--${boundary}`;
    const buffers = [
        // eslint-disable-next-line function-paren-newline
        Buffer.from(
            // eslint-disable-next-line prefer-template
            bx + eol + "Content-Disposition: form-data; name=\"json_request_part\""
            + eol + "Content-Type: application/json" + eol
            + eol + eol + JSON.stringify(jsonPart) + eol,
        ),
        // eslint-disable-next-line function-paren-newline
        Buffer.from(
            // eslint-disable-next-line prefer-template
            bx + eol + "Content-Disposition: form-data; name=\"file\"; filename=\"" + filePart.name + "\"" + eol
            + "Content-Type: " + filePart.type + eol + eol,
        ),
        Buffer.from(filePart.content, 'base64'),
        Buffer.from(`${eol + bx}--${eol}`),
    ];
    return Buffer.concat(buffers);
}
 类似资料:
  • 我们有一个测试框架(gauge)设置,我们使用slf4j和log4j进行日志记录。最近,我们实现了用于报告目的的报告门户,它可以按预期工作。它显示已执行、已通过、已失败的案例以及其中显示有日志的失败案例。 我是这样说的:https://github.com/reportportal/logger-java-log4j“其中,我配置了如图所示的log4j2.xml文件,但日志没有反映在报表门户中。不

  • 我有一个要转换成CSV格式的XML。我使用Jasper Reports来转换它,并使用Jasper Studio来设计JRXML。 这是XML: 我希望CSV格式包含以下列: fields_exitence分为3个(nonMap、ux和两者),属性在

  • 将崩溃日志提交给远程服务器 进程: Main, Renderer 以下是一个自动提交崩溃日志到服务器的示例 const { crashReporter } = require('electron') crashReporter.start({ productName: 'YourName', companyName: 'YourCompany', submitURL: 'https:/

  • 我希望每个JUnit 5测试都有自己的log4j2日志文件。然后,我想将此日志文件附加到诱惑超文本标记语言测试报告。 昨天我用谷歌搜索了两种不同的方法,但都没用。一种是在log4j2配置文件中使用系统属性。但是这些显然只初始化了一次。既然我写了这些行,我想知道是否有一种方法可以在运行时触发日志配置的重新初始化? 然后我尝试了一种方法,通过编程更新附加器。它非常复杂,深入log4j2的内部。它不起作

  • 我在我的项目中使用cucumber版本4。我在我的项目中使用以下依赖项。 使用上述依赖关系,我能够生成“cucumberjvm报告”。 我还用java编写了代码,用于将屏幕截图附加到报告中,我只在场景失败时拍摄屏幕截图。 我不确定是否遗漏了什么,但屏幕截图没有附加到报告中。cucumber生成的默认html报告正在显示屏幕截图。 谁能帮我一下吗。谢谢

  • 我将页码信息从主报表传递到页脚子报表。在主报表中,我已经声明了子报表参数pageTot和pageNum。它们通过向导映射到主报告$V{PAGE _ COUNT}和$V{PAGE _ NUMBER}中的参数。在子报表中,我声明了两个参数pageNum和pageTot。在它们的参数属性中,我取消了将use作为提示,并将它们都设置为java.lang.integer类型。然后,我替换了文本字段的文本字段