Skip to content

Add SLF4J bridge for ChromaLogger #141

@oss-amikos

Description

@oss-amikos

Summary

The ChromaLogger interface provides structured logging for transport-level events (request/response, errors). Currently only a noop() implementation exists. Users who use SLF4J (Logback, Log4j2 via SLF4J) have no out-of-the-box bridge.

Proposal

Add a Slf4jChromaLogger that implements ChromaLogger and delegates to an SLF4J Logger:

  • debug(event, fields)logger.debug("{} {}", event, fields)
  • warn(event, fields)logger.warn("{} {}", event, fields)
  • error(event, fields, throwable)logger.error("{} {}", event, fields, throwable)
  • Structured fields formatted as key=value pairs or MDC entries

Usage

Client client = ChromaClient.builder()
        .baseUrl("http://localhost:8000")
        .logger(Slf4jChromaLogger.create()) // or .create("custom.logger.name")
        .build();

Considerations

  • SLF4J should be an optional dependency (provided scope in Maven) — users who don't use SLF4J shouldn't pull it in
  • Consider MDC (Mapped Diagnostic Context) for structured fields vs inline formatting
  • Factory method pattern: Slf4jChromaLogger.create() uses default logger name, .create(String name) for custom
  • Java 8 compatible

References

  • ChromaLogger interface: src/main/java/tech/amikos/chromadb/v2/ChromaLogger.java
  • Builder wiring: ChromaClient.Builder.logger(ChromaLogger)
  • SLF4J API: https://www.slf4j.org/

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