clojure-trove

Provide a backend-agnostic logging facade for Clojure and ClojureScript libraries.

1|Updated Sep 5, 2025
One-click install
npx skills add https://github.com/Ramblurr/nix-devenv --skill clojure-trove
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: clojure-trove
Source: https://github.com/Ramblurr/nix-devenv/tree/main/prompts/skills/clojure-trove
Command: npx skills add https://github.com/Ramblurr/nix-devenv --skill clojure-trove

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill includes references (resource) components.

What problem does it solve?

This Skill provides a lightweight, backend-agnostic logging facade for Clojure and ClojureScript libraries, allowing library authors to emit logs without dictating the logging backend used by the application.

Core Features & Use Cases

  • Library Logging: Enables library authors to add logging capabilities without adding dependencies or forcing a specific logging framework on users.
  • Structured Logging: Supports rich, data-oriented logging with event IDs and lazy evaluation of expensive data.
  • Backend Agnostic: Works with various backends like console, Telemere, Timbre, μ/log, tools.logging, and SLF4J.
  • Use Case: A library author can use trove/log! to emit debug information about internal processing. The end-user application can then configure Trove to send these logs to Timbre for detailed analysis or to the console for immediate feedback, all without modifying the library's code.

Quick Start

Use the clojure-trove skill to emit a log message with level info and a custom message.

Frequently Asked Questions about clojure-trove

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I add logging to a Clojure library without forcing a backend dependency on users?

Use a backend-agnostic logging facade to emit logs without dictating the logging backend, allowing application users to independently select and configure their preferred framework. This approach adds zero runtime dependencies to your library.

Does structured logging in Clojure support lazy evaluation for expensive data?

Structured logging via this facade supports lazy evaluation of expensive data. It uses a map-based API to emit rich, data-oriented logs with event IDs, ensuring computational overhead is avoided unless the log is actually processed.

Can I use this logging facade with Timbre, tools.logging, and SLF4J?

Yes, the facade works with various backends including console, Telemere, Timbre, μ/log, tools.logging, and SLF4J. End-users can configure the backend dynamically for immediate console feedback or detailed analysis without modifying library code.

What is the best way to filter Clojure logs without coupling to a specific framework?

Backend-agnostic filtering allows library authors to emit logs with flexible filtering mechanisms. This decouples log generation from backend-specific filter configurations, ensuring libraries remain unopinionated about how applications manage log levels.

Why does my ClojureScript library need a logging facade instead of a direct logging dependency?

A logging facade prevents dependency conflicts by allowing library authors to emit logs without adding direct framework dependencies. This enables application users to select their preferred backend, avoiding version mismatches and reducing runtime bloat.

Are there limitations to using a minimal logging facade for Clojure backend applications?

As a minimal facade, it focuses on emitting logs and defers actual log routing, formatting, and backend-specific advanced features to the configured logging framework. Library authors emit logs, while end-users handle the final output configuration.