Skip to content

Rainbow Gum Support - #4032

Open
agentgt wants to merge 11 commits into
jooby-project:mainfrom
agentgt:feature/rainbowgum-sol-high
Open

agentgt wants to merge 11 commits into
jooby-project:mainfrom
agentgt:feature/rainbowgum-sol-high

Conversation

@agentgt

@agentgt agentgt commented Oct 26, 2026 •

Copy link
Copy Markdown
Contributor

Rainbow Gum normally works out of the box for anything that uses SLF4J but this module provides a better Jooby experience and allows you to configure all of logging with application.conf.

agentgt and others added 4 commits October 26, 2026 15:13
Add the optional jooby-rainbowgum module with native Typesafe Config properties, queued bootstrap logging, configured global replacement, and temporary server logger muting. A default no-op LoggingService initialization hook receives the actual lazy or programmatically supplied environment.

Read the current environment config on level-change publications and document Jooby Run restarts, explicit rereading, startup behavior and configuration examples. Include the module in dependency management and the generated BOM.

Draft pending a Rainbow Gum release with dynamic OFF and global router rebinding fixes. Validated on JDK 21 against the patched 1.0.0-SNAPSHOT: 1,311 Jooby core tests, 10 integration tests, clean verify, Javadoc, and a JPMS service-loading/bootstrap smoke test.

Refs jooby-project#4021.

Co-authored-by: Codex <noreply@openai.com>
Use a programmatic level override so muting a logger literally named root does not change the root default. Treat null HOCON map entries as absent and document caller/decorator bootstrap capabilities.

Validation: JDK 21 core and integration tests pass against the patched Rainbow Gum snapshot (1,311 core tests and 11 integration tests).

Co-authored-by: Codex <noreply@openai.com>
Remove the release-blocker comment now that the OFF and global router rebinding fixes are published. Validate against Maven Central artifacts without a snapshot version override.

Validation: JDK 21 clean verify (1,311 core and 11 integration tests) and JPMS service-loading/bootstrap smoke test.

Co-authored-by: Codex <noreply@openai.com>
The ownership marker was added by a PropertiesProvider, which runs for every service loaded LogConfig. A Rainbow Gum the application installed from such a config, or supplied by its own RainbowGumProvider, was therefore treated as Jooby's and closed and replaced when the environment loaded.

The bootstrap provider now builds its own config with the marker, as the Spring Boot pre-boot provider does, and has the lowest priority so application providers win.

Found in review of the branch, requested by Adam Gent.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@codecov

codecov Bot commented Oct 26, 2026 •

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 94.20%. Comparing base (94d2244) to head (c557e0c).
⚠️ Report is 2 commits behind head on main.

Additional details and impacted files
@@             Coverage Diff             @@
##             main    #4032       +/-   ##
===========================================
+ Coverage        0   94.20%   +94.20%     
- Complexity      0     6680     +6680     
===========================================
  Files           0      432      +432     
  Lines           0    20957    +20957     
  Branches        0     2106     +2106     
===========================================
+ Hits            0    19742    +19742     
- Misses          0      759      +759     
- Partials        0      456      +456     

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

agentgt and others added 6 commits October 26, 2026 18:08
…loggers

Loggers with a fixed level stay bound to the Rainbow Gum that created them. Rebuilding logging for a later environment closed that instance, so their events were lost; making every logger changeable hid this at a cost on every logger. Logging is now configured from the first environment only, replacing the queued bootstrap instance, as with Logback and Log4j.

Level changes are allowed by default only for the loggers Jetty and Undertow mute during start and stop. Rereading levels with the change publisher is opt in through logging.change.logger. The docs describe both and Jooby Run keeping the first configuration.

Requested by Adam Gent.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Working notes to remove before merging.

Requested by Adam Gent.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The module needs no native image metadata. Jooby needs a resource entry for application*.conf.

Requested by Adam Gent.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The pattern's %n writes the platform line separator, so comparing against "\n" failed on Windows.

Requested by Adam Gent.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The test's invalid configuration named a missing encoder. Rainbow Gum
0.16.2 opens the appender's output before resolving the encoder and does
not close it when that fails, so application.log stayed open and Windows
could not delete the temp directory. An unknown output scheme fails
before anything is opened, and the test now checks no log file was
created.

Requested by Adam Gent.
@agentgt
agentgt marked this pull request as ready for review October 27, 2026 14:05
@agentgt agentgt changed the title Feature/rainbowgum sol high Rainbow Gum Support Oct 27, 2026

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant