In Grails 7.1.0, the default logback-spring.xml includes:
<withJansi>true</withJansi>
When this setting is enabled, console logging behaves incorrectly after the first hot-reload / recompilation event in development mode.
Observed behavior
On application startup: Logs are displayed correctly in the console
After the first code change (triggering recompilation): Only this message is shown:
File .../UserConfigService.groovy changed, recompiling...
After that point:
- No further console logs are displayed for subsequent changes
- The application continues running normally
- Logging output appears effectively stuck or disabled
Expected behavior
Console logging should remain consistent across:
- application startup
- subsequent file changes
regardless of whether Jansi is enabled.
Steps to reproduce
- Create a plain Grails 7.1.0 app with default logback-spring.xml
- Start the application in development mode
- Modify a source file to trigger recompilation
- Observe logs during the first reload
- Modify another file
- Observe that no further logs appear in the console
Workaround
Disabling Jansi restores correct behavior:
<withJansi>false</withJansi>
or removing the setting entirely.
Notes
- The issue appears after the first recompilation event
- Startup logging is initially correct
- Logging breaks only after hot reload activity begins
- Likely interaction between Jansi ANSI console rendering and Grails dev-mode logging/reloading pipeline
Runtime
Tested on macOS and Windows 11 with Java 25
Actual Behaviour
No response
Steps To Reproduce
No response
Environment Information
No response
Example Application
No response
Version
7.1.0
In Grails 7.1.0, the default
logback-spring.xmlincludes:<withJansi>true</withJansi>When this setting is enabled, console logging behaves incorrectly after the first hot-reload / recompilation event in development mode.
Observed behavior
On application startup: Logs are displayed correctly in the console
After the first code change (triggering recompilation): Only this message is shown:
File .../UserConfigService.groovy changed, recompiling...After that point:
Expected behavior
Console logging should remain consistent across:
regardless of whether Jansi is enabled.
Steps to reproduce
Workaround
Disabling Jansi restores correct behavior:
<withJansi>false</withJansi>or removing the setting entirely.
Notes
Runtime
Tested on
macOSandWindows 11withJava 25Actual Behaviour
No response
Steps To Reproduce
No response
Environment Information
No response
Example Application
No response
Version
7.1.0