Skip to content

Rainbow Gum logging module #4021

Open
Open

Description

@agentgt

@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.

https://github.com/jstachio/rainbowgum

Why:

https://github.com/jstachio/rainbowgum/blob/main/why_rainbowgum_is_better.md

Doc:

https://jstach.io/rainbowgum/

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.

Activity

  1. jknack commented on Oct 25, 2026

    @jknack
    Member

    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.

  2. agentgt commented on Oct 25, 2026

    @agentgt
    ContributorAuthor
    1. 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.

    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.

    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?

    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?

  3. jknack commented on Oct 26, 2026

    @jknack
    Member

    Do you want logging level configuration changes to be supported in application.conf?

    It will be nice to setup everything from configuration, yes.

    Perhaps I can have Codex or Claude just pump it out and you can see?

    Let's try that.

  4. agentgt commented on Oct 27, 2026

    @agentgt
    ContributorAuthor

    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.conf to do this similar to: https://jstach.io/doc/rainbowgum/current/apidocs/#simple_props_level_file and so some polling.

  5. agentgt commented on Oct 27, 2026

    @agentgt
    ContributorAuthor

    Oh and I will fix the doc. It is mostly AI slop but it reminds me of what I need to talk about.

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions