You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
@jknack I have a logging framework I think I showed you in the past but was not ready or Jooby was not ready because it did not target 21. I have put an enormous amount of effort (it is not vibe coded but now is assisted) on making Rainbow Gum the future of logging. This includes Scoped Values, Open Telemetry, Graal VM native checking on every build, JFR support etc.
I can either add the support directly in Rainbow Gum's project like I have for Helidon, Micronaut, and Spring Boot or if you like a module directly on Jooby.
I think you might like Rainbow Gum's choices and given this project often favors performance is a good fit.
An interesting thing is that Rainbow Gum can use Typesafe config application.conf directly or the Environment class (I can't recall which class you have in Jooby that has properties but I think its Environment).
Logging btw does indeed impact performance based on my benchmarking but you can easily test these days with an LLM.
not sure how easy will be to add it, is rainbowgum a sl4fj implementation? Also, booting logback or log4j properly is a challenged not sure how complex will be to add a new implementation.
not sure how easy will be to add it, is rainbowgum a sl4fj implementation?
Yes. It implements all the major facades. If you go to slf4j and even click on the hamburger menu you will see it in the drop down as an implementation.
Also, booting logback or log4j properly is a challenged not sure how complex will be to add a new implementation.
Trivial given that unlike Spring Boot you have never relied on Lightbend/Typesafe Config to do the logging configuration and instead on the logging framework itself.
It really comes down to how much more configuration support you want to provide like metrics and various other ops stuff.
I don't know if jooby is ok with LLM assisted PRs but this is like a 2 minute LLM code generator job for Opus 5.5 or Codex Sol.
Also, booting logback or log4j properly is a challenged not sure how complex will be to add a new implementation.
Rainbow gum is designed for integration. It comes down to if you want initialize jooby first and if that causes logging first and if you want to have configuration happen before all of that and if you want that configuration to impact logging.
For example: Do you want logging level configuration changes to be supported in application.conf?
While I used several agents to code review and generate the code I myself reviewed all the code.
Of course they found issues. They always do. There are some minor issues in Jooby I file later as separate bug PRs and there were several Windows specific issues in Rainbow Gum mostly having to do with line separators. Those bugs in Rainbow Gum have been fixed and released.
Understand that although the changes look more involved this is Spring Boot Cadillac level of integration. All configuration can now be done in application.conf. I also push the agents to test GraalVM native and AOT warming.
I'm still reviewing and may have one more agent check so don't merge yet.
The only major thing missing but not even Spring Boot has this is dynamic reload of level configuration (to change logger levels). This is because Jooby does not do any dynamic loading of config itself.
Activity
jknack commentedon Oct 25, 2026
not sure how easy will be to add it, is rainbowgum a sl4fj implementation? Also, booting logback or log4j properly is a challenged not sure how complex will be to add a new implementation.
agentgt commentedon Oct 25, 2026
Yes. It implements all the major facades. If you go to slf4j and even click on the hamburger menu you will see it in the drop down as an implementation.
Trivial given that unlike Spring Boot you have never relied on Lightbend/Typesafe Config to do the logging configuration and instead on the logging framework itself.
It really comes down to how much more configuration support you want to provide like metrics and various other ops stuff.
The simple solution is to do what Helidon implementation does and use Rainbow Gum simple props module: https://jstach.io/doc/rainbowgum/current/apidocs/#simple_props
I don't know if jooby is ok with LLM assisted PRs but this is like a 2 minute LLM code generator job for Opus 5.5 or Codex Sol.
Rainbow gum is designed for integration. It comes down to if you want initialize jooby first and if that causes logging first and if you want to have configuration happen before all of that and if you want that configuration to impact logging.
For example: Do you want logging level configuration changes to be supported in application.conf?
Likewise for "Environment logging" all of that can be supported easily with Rainbow Gum with custom: https://jstach.io/doc/rainbowgum/current/apidocs/io.jstach.rainbowgum/io/jstach/rainbowgum/spi/RainbowGumServiceProvider.PropertiesProvider.html
Perhaps I can have Codex or Claude just pump it out and you can see?
jknack commentedon Oct 26, 2026
It will be nice to setup everything from configuration, yes.
Let's try that.
agentgt commentedon Oct 27, 2026
See #4032 .
While I used several agents to code review and generate the code I myself reviewed all the code.
Of course they found issues. They always do. There are some minor issues in Jooby I file later as separate bug PRs and there were several Windows specific issues in Rainbow Gum mostly having to do with line separators. Those bugs in Rainbow Gum have been fixed and released.
Understand that although the changes look more involved this is Spring Boot Cadillac level of integration. All configuration can now be done in
application.conf. I also push the agents to test GraalVM native and AOT warming.I'm still reviewing and may have one more agent check so don't merge yet.
The only major thing missing but not even Spring Boot has this is dynamic reload of level configuration (to change logger levels). This is because Jooby does not do any dynamic loading of config itself.
If you wanted to go that route I would only allow an external file called
levels.confto do this similar to: https://jstach.io/doc/rainbowgum/current/apidocs/#simple_props_level_file and so some polling.agentgt commentedon Oct 27, 2026
Oh and I will fix the doc. It is mostly AI slop but it reminds me of what I need to talk about.