Skip to content

Add java.util.logging (JUL) bridge for ChromaLogger #142

@oss-amikos

Description

@oss-amikos

Summary

The ChromaLogger interface provides structured logging for transport-level events. A java.util.logging bridge would give users a zero-dependency logging option that works out of the box with any JDK.

Proposal

Add a JulChromaLogger that implements ChromaLogger and delegates to a java.util.logging.Logger:

  • debug(event, fields)logger.fine(event + " " + formatFields(fields))
  • info(event, fields)logger.info(event + " " + formatFields(fields))
  • warn(event, fields)logger.warning(event + " " + formatFields(fields))
  • error(event, fields, throwable)logger.log(Level.SEVERE, event + " " + formatFields(fields), throwable)

Usage

Client client = ChromaClient.builder()
        .baseUrl("http://localhost:8000")
        .logger(JulChromaLogger.create()) // uses "tech.amikos.chromadb" logger name
        .build();

Considerations

  • Zero additional dependencies — JUL is built into the JDK
  • Could serve as the default logger (instead of noop) so users get logging out of the box
  • Consider whether this should be wired automatically when no logger is explicitly set
  • Factory method pattern: JulChromaLogger.create() for default, .create(String name) for custom logger name
  • Guard field formatting behind level checks (logger.isLoggable(Level.FINE)) to avoid allocation when disabled
  • Java 8 compatible

References

  • ChromaLogger interface: src/main/java/tech/amikos/chromadb/v2/ChromaLogger.java
  • ChromaLoggers (noop impl): src/main/java/tech/amikos/chromadb/v2/ChromaLoggers.java
  • Builder wiring: ChromaClient.Builder.logger(ChromaLogger)

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions