#3031·karate

日志记录: `logging.console` 的优先级高于 logback.xml,这在文档中没有说明,`report: 'warn'` 是错误的 `printEnabled` 替换项(会清空 Gatling 重放)

作者: ptrthomas创建于 2026年9月3日更新于 2026年9月12日
标签enhancementfixed
  1. logging.console 覆盖 logback.xml 中的每个类别级别 — — 这是设计上的,但文档中隐藏了这一点 configure logging = { console: X } (karate-config.js, --log-console, karate-pom.json) 调用 LogContext.setRuntimeLogLevel,该方法在 karate 上设置了级别 X,每个 karate.* 类别和 io.karatelabs,替换了用户的 logback.xml 为这些名称,并根据场景进行了快照和恢复。这就是 #2917 的修复,并将保留。缺失的内容是: - 没有页面说明优先级规则或逃生门: 省略 console,Karate 从不触及 Logback 级别 — logback.xml 完全控制了这些名称。文档表中列出了 console,标记为 "默认 info",这读取为一个生效的默认值;它只是 karate.get('config') 所报告的值,没有任何应用它。 - logging.mdx 表示覆盖持续 "运行期间";它是按场景进行的。 - performance-testing.mdx 在示例 karate-config.js 中设置了 console: 'warn',然后十三行后,给出了一个 logback.xml 配方( karate.scenario INFO, karate.http TRACE),该 console 行默默地击败了它。客户正好遇到了这一点:“将 logging.console 设置为任何值都完全覆盖了 logback.xml 中的任何特定日志级别设置。”

  2. report: 'warn' 是文档中对 printEnabled = false 的替代 — — 这是错误的 print / karate.log() 进入 SLF4J karate.scenario 以 INFO 无条件 的方式( LogContext.LogWriter);只有报告缓冲区的追加受 logging.report 限制。因此,report: 'warn': - 不会阻止打印输出到控制台,并且 - 清空 Gatling 日志重放(HTTP 块和打印在 INFO 级别下进入缓冲区),然后记录了“捕获没有输出… configure logging = { report: 'info' }”提示。 该提示是为什么客户得出了“必须将 logging.report 设置为 'info' 才能启用日志重放”的结论。这不是事实:默认报告阈值是 DEBUG,而重放仅通过 karateProtocol().logReplay(...) 来启用。错误的建议存在于 printEnabled 的弃用警告中,KarateConfigdocs/MIGRATION_GUIDE.mdkarate-docs 迁移页面、logging.mdx(掩码部分)和 performance-testing.mdx 的故障排除行“日志重放产生没有输出 → 将 logging.report 设置为 'info'”。 printEnabled = false 的正确的 v2 等价物是 karate.scenario 的 Logback 级别(或 console: 'warn' 来静默所有 Karate 输出)。

  3. "重放器只输出 HTTP 请求和响应" — — 不可重现

内容来源: karatelabs/karate