{"record":{"id":"2f5952404531206f","repo":"karatelabs/karate","slug":"configure-report-loglevel-is-no-longer-supported-use","errorCode":null,"errorMessage":"'configure report = { logLevel: ... }' is no longer supported; use 'configure logging = { report: \"info\" }' instead (see docs/MIGRATION_GUIDE.md#logging)","messagePattern":"'configure report = (.+?)' is no longer supported; use 'configure logging = (.+?)' instead \\(see docs/MIGRATION_GUIDE\\.md#logging\\)","errorType":"exception","errorClass":"RuntimeException","httpStatus":null,"severity":"error","filePath":"karate-core/src/main/java/io/karatelabs/core/KarateConfig.java","lineNumber":606,"sourceCode":"        if (value instanceof Map<?, ?> map) {\n            if (map.containsKey(\"interval\")) {\n                this.retry.put(\"interval\", toInt(map.get(\"interval\")));\n            }\n            if (map.containsKey(\"count\")) {\n                this.retry.put(\"count\", toInt(map.get(\"count\")));\n            }\n        }\n    }\n\n    private void configureReport(Object value) {\n        if (value instanceof Boolean b) {\n            this.report.put(\"showLog\", b);\n            this.report.put(\"showAllSteps\", b);\n            return;\n        }\n        if (value instanceof Map<?, ?> map) {\n            if (map.containsKey(\"logLevel\")) {\n                throw new RuntimeException(\n                        \"'configure report = { logLevel: ... }' is no longer supported; use \"\n                                + \"'configure logging = { report: \\\"info\\\" }' instead \"\n                                + \"(see docs/MIGRATION_GUIDE.md#logging)\");\n            }\n            if (map.containsKey(\"showLog\")) {\n                this.report.put(\"showLog\", toBoolean(map.get(\"showLog\")));\n            }\n            if (map.containsKey(\"showAllSteps\")) {\n                this.report.put(\"showAllSteps\", toBoolean(map.get(\"showAllSteps\")));\n            }\n        }\n    }\n\n    @SuppressWarnings(\"unchecked\")\n    private void configureLogging(Object value) {\n        if (!(value instanceof Map<?, ?> raw)) {\n            throw new RuntimeException(\"configure 'logging' expects a map, got: \"\n                    + (value == null ? \"null\" : value.getClass().getName()));","sourceCodeStart":588,"sourceCodeEnd":624,"githubUrl":"https://github.com/karatelabs/karate/blob/a22eb90246d958d15a47bf436693d0121ad2812d/karate-core/src/main/java/io/karatelabs/core/KarateConfig.java#L588-L624","documentation":"The legacy 'configure report = { logLevel: ... }' form has been removed in favor of the unified logging configuration. Karate detects the logLevel key inside a configure report map and throws a migration-error message pointing at docs/MIGRATION_GUIDE.md#logging.","triggerScenarios":"A feature file or JS contains 'configure report = { logLevel: \"info\" }' (or similar map with a logLevel key). Boolean forms like 'configure report = false' still work; only the map-with-logLevel form throws.","commonSituations":"Projects upgraded from an older Karate version where per-report logLevel was valid; copied-from-old-docs karate-config.js; CI configs not updated during migration.","solutions":["Replace 'configure report = { logLevel: ... }' with 'configure logging = { report: \"...\" }'","Follow docs/MIGRATION_GUIDE.md#logging for the full mapping of old report options to logging options","Keep 'configure report = true/false' if you only need showLog/showAllSteps toggles — that form is still supported"],"exampleFix":"// before\n* configure report = { logLevel: 'info' }\n// after\n* configure logging = { report: 'info' }","handlingStrategy":"validation","validationCode":"// reject legacy logLevel before configuring\nif (cfg.report && cfg.report.logLevel) { throw 'use configure logging = { report: ... } instead'; }","typeGuard":"function isModernLoggingCfg(cfg) { return !cfg || !cfg.report || !cfg.report.logLevel; }","tryCatchPattern":"try { karate.configure('report', map); } catch (RuntimeException e) { if (e.getMessage().contains('no longer supported')) { log.error('Migrate per docs/MIGRATION_GUIDE.md#logging'); } throw e; }","preventionTips":["Grep the codebase for 'configure report = {' during upgrades","Use only boolean report config or migrate to configure logging","Read the migration guide before major-version upgrades"],"tags":["configuration","deprecated","logging","migration"],"backgroundTag":"deprecated-api-usage","analyzedSha":"a22eb90246d958d15a47bf436693d0121ad2812d","analyzedAt":"2026-09-12T09:01:00.220Z","contentChangedAt":"2026-09-12T09:01:00.220Z","schemaVersion":2},"datasetVersion":"2026-09-16T19:17:19.609Z"}