Traceability: full list of the commits of this logging campaign, from Friday 31 July 2026 to Friday 7 August 2026, across the three repositories. The commits made before this issue existed are included, since they are the ones this issue was created to cover.h3. xwiki-commons
8f2760b363 (PR #1867, 1 Aug) — first pass. Audit of all 395 logger calls of the main sources plus a read-through of the 304 literal messages: typos, String.format() replaced by the parameterized form, e.getMessage() replaced by getRootCauseMessage(), brackets around parameters, error() calls that dropped the caught exception now passing it, and a few level downgrades.
1e87bcbb2c (PR #1871, 3 Aug) — second pass, the 12 remaining sites: root cause in warn(), explicit toString() removed on placeholder arguments, DefaultXMLParser no longer dropping its ConversionException, EmbeddableComponentManager moved to a static final logger, RuntimeUtils parameterized.
a4d51f791d (PR #1872, 3 Aug) — first correction, after Thomas' review: 3 of the 4 toString() removals reverted, because log arguments are XStream-serialized into the job log and are read back as null once their class can no longer be resolved. Each site now carries a comment saying why the String is built eagerly.
d100cb2c14 (PR #1883, 7 Aug) — first commit under this issue in commons: the six log level changes the sweep had made are reverted (DefaultDiffManager back to info, AbstractInstalledExtensionRepository, DefaultGroupedJobInitializerManager, ObservationContextListener and DefaultHTMLElementSanitizer twice back to error). The message improvements of those same statements are kept.
xwiki-rendering
989303b53 (PR #397, 1 Aug) — first pass: RenderingContextStore no longer printing a stack trace in a warning, IconTransformation parameterized, brackets in MacroTransformation, identifying parameters (macro id, syntax, resource type) added to the error messages that only had a bare sentence.
80c4e16bf (PR #399, 3 Aug) — two warn() calls inside a catch that never mentioned the exception they held. The non-violations found by the detector are recorded in the PR description.
d8ce0b9f6 (6 Aug) — first commit under this issue in rendering: the invalid-macro-hint warning of DefaultMacroManager rewritten, since it duplicated its own root cause.
xwiki-platform — the sweep (1-2 Aug)
Fifteen commits, one per batch of modules, each merged through its own PR:
bdc44c82db4 (PR #6055) — broken log messages and best practices in oldcore
51f34b728e8 (PR #6066) — oldcore and 5 more modules
16906187c4a (PR #6068) — oldcore and 7 more modules
df35af32b1a (PR #6070) — oldcore and 10 more modules
7766657ccdd (PR #6071) — oldcore and 16 more modules
xwiki-platform — fallout of the sweep (2-5 Aug)
92af91a1151 (PR #6069, 2 Aug) — build fix: the duplicated FileSystemURLFactory message rejected by the Checkstyle MultipleStringLiterals rule, and DefaultModelBridgeTest still asserting the old recycle-bin message.
0ee84274bfc (3 Aug) — build fix after the refactorings.
8a18f8b59c0 (4 Aug) — lowered JaCoCo coverage: in UIExtensionScriptService a 2-arg warn() became a 3-arg call, whose varargs array construction sits in a never-covered catch block and pushed the module under its floor.
bfbbf448d8c (4 Aug) — the DefaultUIExtensionManager test missing from the commit above.
770cf317135 (4 Aug) — WebJars test broken by the resource-servlet logging change.
f77cbcfebbb and 52f1fe313df (5 Aug) — declaration order: converting a static LOGGER to an injected one left an instance field ahead of static finals. Found by sweeping every module of the passes with the checkstyle ruleset.
xwiki-platform — corrections raised during review
b6eb4ad1349 (PR #6085, 3 Aug) — the platform counterpart of xwiki-commons PR #1872: the eager String is kept for the log arguments that must not be serialized into the job log (a live Hibernate Session, a MailConfiguration whose toString() masks the SMTP password, a Mail holding body and attachments, a MoveAttachmentRequest, StringBuilder}}s, and the role {{Type of DefaultWikiComponentInvocationHandler). Each site carries a comment so the next pass does not remove it again.
f68b280b003 (6 Aug) — XMLScriptService: its catch block could not log anything, since the logger is injected after construction and a DOMImplementationRegistry failure raised an NPE instead of a warning. The lookup moves to initialize(), a test asserts the warning, and the module's JaCoCo ratio is raised.
a867cee13dc (6 Aug) — a failure to save an event stream event is logged as an error with its stack trace rather than a warning with the root cause only: the event is lost and nothing else records it.
08e043feb30 (6 Aug) — same for a wiki creation failure, which leaves the new wiki half created and whose cause is only findable in the log.
72d3c126c9d (6 Aug) — the 6 sites that inlined the trace into the message through ExceptionUtils.getStackTrace() pass the throwable as the trailing argument again (TestUtils twice, XWikiWebDriver, XWikiContext, XWikiAttachment, AbstractXWikiStore).
7d8554fec64 (6 Aug) — DefaultURLSecurityManager: the warn plus debug pair restored instead of a single error with the trace, an unparsable URI coming from the request and being hittable on every request.
0f2b18576d9 (6 Aug) — XWikiPageNotification gets its XWikiException wrapping back, DefaultWikiCopier logs the wrapping exception's own message instead of a literal duplicating it, and the path traversal warning of InternalTemplateManager drops a root cause that said nothing.
9ce38073686 (6 Aug) — the query filter logged by DefaultQuery is converted to a String at the call site, a filter being exactly the kind of extension-provided class that fails to resolve when a job status is read back.
e0350ffc328 (PR #6101, 7 Aug) — the main correction: the throwable is restored as the trailing SLF4J argument in the 106 warn() calls where it had been replaced by getRootCauseMessage(e) formatted into the message. The message improvements of those statements are kept, five tests are updated and the unused imports dropped.
37f5d9353b6 (PR #6110, 7 Aug) — the injected-Logger breakage: the 15 deprecated public constructors of the Store classes move out of oldcore and are re-added from xwiki-platform-legacy-oldcore, so the main artifact no longer offers a construction path that leaves every injected collaborator null. Their javadoc says so, and a test asserts the re-added constructors still behave.
0732dc45bd8 (PR #6113, 7 Aug) — the last one: the statistics storing thread goes back to warn with its throwable (without restoring the isInfoEnabled() guard, which tested the wrong level and was a bug), the throwable comes back on the three last warn() sites the previous pass had missed, and the error plus debug pair collapsed when deleting the previous document of a package is restored, with the reason stated inline.
Vincent Massol on 07/Aug/26 17:21
Traceability: full list of the commits of this logging campaign, from Friday 31 July 2026 to Friday 7 August 2026, across the three repositories. The commits made before this issue existed are included, since they are the ones this issue was created to cover.
h3. xwiki\-commons * [8f2760b363|https://github.com/xwiki/xwiki-commons/commit/8f2760b363] \(PR #1867, 1 Aug\) — - first pass. Audit of all 395 logger calls of the main sources plus a read\-through of the 304 literal messages: typos, {{String.format\(\)}} replaced by the parameterized form, {{e.getMessage\(\)}} replaced by {{getRootCauseMessage\(\)}}, brackets around parameters, {{error\(\)}} calls that dropped the caught exception now passing it, and a few level downgrades. * [1e87bcbb2c|https://github.com/xwiki/xwiki-commons/commit/1e87bcbb2c] \(PR #1871, 3 Aug\) — - second pass, the 12 remaining sites: root cause in {{warn\(\)}}, explicit {{toString\(\)}} removed on placeholder arguments, {{DefaultXMLParser}} no longer dropping its {{ConversionException}}, {{EmbeddableComponentManager}} moved to a static final logger, {{RuntimeUtils}} parameterized. * [a4d51f791d|https://github.com/xwiki/xwiki-commons/commit/a4d51f791d] \(PR #1872, 3 Aug\) — - first correction, after Thomas' review: 3 of the 4 {{toString\(\)}} removals reverted, because log arguments are XStream\-serialized into the job log and are read back as null once their class can no longer be resolved. Each site now carries a comment saying why the String is built eagerly. * [d100cb2c14|https://github.com/xwiki/xwiki-commons/commit/d100cb2c14] \(PR #1883, 7 Aug\) — - first commit under this issue in commons: the six log level changes the sweep had made are reverted \({{DefaultDiffManager}} back to info, {{AbstractInstalledExtensionRepository}}, {{DefaultGroupedJobInitializerManager}}, {{ObservationContextListener}} and {{DefaultHTMLElementSanitizer}} twice back to error\). The message improvements of those same statements are kept.
h3. xwiki\-rendering * [989303b53|https://github.com/xwiki/xwiki-rendering/commit/989303b53] \(PR #397, 1 Aug\) — - first pass: {{RenderingContextStore}} no longer printing a stack trace in a warning, {{IconTransformation}} parameterized, brackets in {{MacroTransformation}}, identifying parameters \(macro id, syntax, resource type\) added to the error messages that only had a bare sentence. * [80c4e16bf|https://github.com/xwiki/xwiki-rendering/commit/80c4e16bf] \(PR #399, 3 Aug\) — - two {{warn\(\)}} calls inside a catch that never mentioned the exception they held. The non\-violations found by the detector are recorded in the PR description. * [d8ce0b9f6|https://github.com/xwiki/xwiki-rendering/commit/d8ce0b9f6] \(6 Aug\) — - first commit under this issue in rendering: the invalid\-macro\-hint warning of {{DefaultMacroManager}} rewritten, since it duplicated its own root cause.
h3. xwiki\-platform —, the sweep \(1\-2 Aug\) Fifteen commits, one per batch of modules, each merged through its own PR:
* [bdc44c82db4|https://github.com/xwiki/xwiki-platform/commit/bdc44c82db4] \(PR #6055\) — - broken log messages and best practices in oldcore * [642bf7f4d32|https://github.com/xwiki/xwiki-platform/commit/642bf7f4d32] \(PR #6056\) — - rest of oldcore * [abb25f5ac8f|https://github.com/xwiki/xwiki-platform/commit/abb25f5ac8f] \(PR #6057\) — - xwiki\-platform\-test * [c968a934eb7|https://github.com/xwiki/xwiki-platform/commit/c968a934eb7] \(PR #6058\) — - xwiki\-platform\-search * [ff443e33624|https://github.com/xwiki/xwiki-platform/commit/ff443e33624] \(PR #6059\) — - xwiki\-platform\-notifications * [d19b3e459e9|https://github.com/xwiki/xwiki-platform/commit/d19b3e459e9] \(PR #6060\) — - xwiki\-platform\-legacy * [dfd58f3daf2|https://github.com/xwiki/xwiki-platform/commit/dfd58f3daf2] \(PR #6061\) — - 5 more modules * [d0e725405f9|https://github.com/xwiki/xwiki-platform/commit/d0e725405f9] \(PR #6062\) — - 8 more modules * [83ae6daefa6|https://github.com/xwiki/xwiki-platform/commit/83ae6daefa6] \(PR #6063\) — - 15 more modules * [c6fd2f4bf5d|https://github.com/xwiki/xwiki-platform/commit/c6fd2f4bf5d] \(PR #6064\) — - 15 more modules * [b3c2a609e4d|https://github.com/xwiki/xwiki-platform/commit/b3c2a609e4d] \(PR #6065\) — - 26 more modules * [51f34b728e8|https://github.com/xwiki/xwiki-platform/commit/51f34b728e8] \(PR #6066\) — - oldcore and 5 more modules * [16906187c4a|https://github.com/xwiki/xwiki-platform/commit/16906187c4a] \(PR #6068\) — - oldcore and 7 more modules * [df35af32b1a|https://github.com/xwiki/xwiki-platform/commit/df35af32b1a] \(PR #6070\) — - oldcore and 10 more modules * [7766657ccdd|https://github.com/xwiki/xwiki-platform/commit/7766657ccdd] \(PR #6071\) — - oldcore and 16 more modules
h3. xwiki\-platform —, fallout of the sweep \(2\-5 Aug\) * [92af91a1151|https://github.com/xwiki/xwiki-platform/commit/92af91a1151] \(PR #6069, 2 Aug\) — - build fix: the duplicated {{FileSystemURLFactory}} message rejected by the Checkstyle MultipleStringLiterals rule, and {{DefaultModelBridgeTest}} still asserting the old recycle\-bin message. * [0ee84274bfc|https://github.com/xwiki/xwiki-platform/commit/0ee84274bfc] \(3 Aug\) — - build fix after the refactorings. * [8a18f8b59c0|https://github.com/xwiki/xwiki-platform/commit/8a18f8b59c0] \(4 Aug\) — - lowered JaCoCo coverage: in {{UIExtensionScriptService}} a 2\-arg {{warn\(\)}} became a 3\-arg call, whose varargs array construction sits in a never\-covered catch block and pushed the module under its floor. * [bfbbf448d8c|https://github.com/xwiki/xwiki-platform/commit/bfbbf448d8c] \(4 Aug\) — - the {{DefaultUIExtensionManager}} test missing from the commit above. * [770cf317135|https://github.com/xwiki/xwiki-platform/commit/770cf317135] \(4 Aug\) — - WebJars test broken by the resource\-servlet logging change. * [f77cbcfebbb|https://github.com/xwiki/xwiki-platform/commit/f77cbcfebbb] and [52f1fe313df|https://github.com/xwiki/xwiki-platform/commit/52f1fe313df] \(5 Aug\) — - declaration order: converting a static LOGGER to an injected one left an instance field ahead of static finals. Found by sweeping every module of the passes with the checkstyle ruleset.
h3. xwiki\-platform —, corrections raised during review * [b6eb4ad1349|https://github.com/xwiki/xwiki-platform/commit/b6eb4ad1349] \(PR #6085, 3 Aug\) — - the platform counterpart of xwiki\-commons PR #1872: the eager String is kept for the log arguments that must not be serialized into the job log \(a live Hibernate {{Session}}, a {{MailConfiguration}} whose {{toString\(\)}} masks the SMTP password, a {{Mail}} holding body and attachments, a {{MoveAttachmentRequest}}, {{StringBuilder}}s, and the role {{Type}} of {{DefaultWikiComponentInvocationHandler}}\). Each site carries a comment so the next pass does not remove it again. * [f68b280b003|https://github.com/xwiki/xwiki-platform/commit/f68b280b003] \(6 Aug\) — - {{XMLScriptService}}: its catch block could not log anything, since the logger is injected after construction and a {{DOMImplementationRegistry}} failure raised an NPE instead of a warning. The lookup moves to {{initialize\(\)}}, a test asserts the warning, and the module's JaCoCo ratio is raised. * [a867cee13dc|https://github.com/xwiki/xwiki-platform/commit/a867cee13dc] \(6 Aug\) — - a failure to save an event stream event is logged as an error with its stack trace rather than a warning with the root cause only: the event is lost and nothing else records it. * [08e043feb30|https://github.com/xwiki/xwiki-platform/commit/08e043feb30] \(6 Aug\) — - same for a wiki creation failure, which leaves the new wiki half created and whose cause is only findable in the log. * [72d3c126c9d|https://github.com/xwiki/xwiki-platform/commit/72d3c126c9d] \(6 Aug\) — - the 6 sites that inlined the trace into the message through {{ExceptionUtils.getStackTrace\(\)}} pass the throwable as the trailing argument again \({{TestUtils}} twice, {{XWikiWebDriver}}, {{XWikiContext}}, {{XWikiAttachment}}, {{AbstractXWikiStore}}\). * [7d8554fec64|https://github.com/xwiki/xwiki-platform/commit/7d8554fec64] \(6 Aug\) — - {{DefaultURLSecurityManager}}: the warn plus debug pair restored instead of a single error with the trace, an unparsable URI coming from the request and being hittable on every request. * [0f2b18576d9|https://github.com/xwiki/xwiki-platform/commit/0f2b18576d9] \(6 Aug\) — - {{XWikiPageNotification}} gets its {{XWikiException}} wrapping back, {{DefaultWikiCopier}} logs the wrapping exception's own message instead of a literal duplicating it, and the path traversal warning of {{InternalTemplateManager}} drops a root cause that said nothing. * [9ce38073686|https://github.com/xwiki/xwiki-platform/commit/9ce38073686] \(6 Aug\) — - the query filter logged by {{DefaultQuery}} is converted to a String at the call site, a filter being exactly the kind of extension\-provided class that fails to resolve when a job status is read back. * [e0350ffc328|https://github.com/xwiki/xwiki-platform/commit/e0350ffc328] \(PR #6101, 7 Aug\) — - the main correction: the throwable is restored as the trailing SLF4J argument in the 106 {{warn\(\)}} calls where it had been replaced by {{getRootCauseMessage\(e\)}} formatted into the message. The message improvements of those statements are kept, five tests are updated and the unused imports dropped. * [37f5d9353b6|https://github.com/xwiki/xwiki-platform/commit/37f5d9353b6] \(PR #6110, 7 Aug\) — - the injected\-Logger breakage: the 15 deprecated public constructors of the Store classes move out of oldcore and are re\-added from xwiki\-platform\-legacy\-oldcore, so the main artifact no longer offers a construction path that leaves every injected collaborator null. Their javadoc says so, and a test asserts the re\-added constructors still behave. * [0732dc45bd8|https://github.com/xwiki/xwiki-platform/commit/0732dc45bd8] \(PR #6113, 7 Aug\) — - the last one: the statistics storing thread goes back to {{warn}} with its throwable \(without restoring the {{isInfoEnabled\(\)}} guard, which tested the wrong level and was a bug\), the throwable comes back on the three last {{warn\(\)}} sites the previous pass had missed, and the error plus debug pair collapsed when deleting the previous document of a package is restored, with the reason stated inline.
This message was sent by Atlassian Jira (v9.3.0#930000-sha1:287aeb6)
If image attachments aren't displayed, see this article.