空手道:有没有办法在使用重试时禁用日志?

Posted

技术标签:

【中文标题】空手道:有没有办法在使用重试时禁用日志?【英文标题】:Karate: Is there a way to disable log when using retry? 【发布时间】:2021-12-22 18:44:26 【问题描述】:

我正在使用空手道进行验证测试。

我对我的一个请求设置了重试,但有时重试次数超过 100 次,这会在每个请求上创建具有相同大负载的大型无用日志... 这让我的 CI 膨胀。

我想减少这个日志的数量,也许只为这个请求禁用日志?

我已经尝试过* configure report = false,但这仅在 Cucumber html 报告中禁用。 我也想在 STDOUT 控制台中禁用。

所以也许在logback-test.xml 中设置了某种形式的日志级别操作?

谢谢。

【问题讨论】:

【参考方案1】:

不,您不能禁用每个请求的日志,您可以通过将日志级别设置为 INFO 来关闭所有内容 - 但我想您不希望这样。 100 次重试对我来说听起来很不寻常。您可以通过功能请求来试试运气 - 但我可以告诉您,除非有人贡献代码,否则这将是低优先级。

如果这真的让您感到困扰,请编写一些自定义 Java 代码来执行此轮询 + HTTP 请求并从空手道调用它。

编辑:我想我有一个适合你的解决方案。您可以完全禁用出现在控制台上的空手道日志 - 同时仍然拥有对 logback-test.xml 进行此更改的 HTML 报告:

<root level="warn">
    <!-- <appender-ref ref="STDOUT" /> -->
    <appender-ref ref="FILE" />
</root>

所以只需注释掉控制台日志附加程序就可以了!

另请阅读:https://github.com/intuit/karate#report-verbosity

【讨论】:

我可以达到100多次重试,因为重试是每秒配置的,它是为了测试处理卫星图像的API,所以如果图像很大,图像的响应可能需要一段时间。编写一些 Java 代码可能很有用,但似乎有点矫枉过正......我已经按照您的建议测试了在 logback-test.xml 中完全禁用 STDOUT。好的,所以我认为这是最好的方法,我必须从 CI 中提取黄瓜报告。谢谢:)。 @RaphaelBahuau target/karate.log 文件将存在 - 所以您仍然拥有完整的日志 是的,我已经注意到了日志文件,但我喜欢在 CI 上实时观看日志,我发现只有在 stdout 中打印错误并在文件中完整登录 @ 987654329@(但我更喜欢使用 html 报告查看完整日志)。我忘了接受我的坏事!

以上是关于空手道:有没有办法在使用重试时禁用日志?的主要内容,如果未能解决你的问题,请参考以下文章

typescript 重试时重试逻辑

Symfony Messenger:是不是可以在最后一次重试时不抛出异常?

Spring Data:重试时回滚事务

使用 ActiveJob 禁用自动重试,与 Sidekiq 一起使用

(403) 放置时出现禁止错误,但重试时成功

重试时客户端连接未正确关闭