Pure Clojure/Script logging library with flexible configuration and powerful features
View on GitHubhugoduncan/library-skills
clojure-libraries
January 23, 2026
Select agents to install to:
npx add-skill https://github.com/hugoduncan/library-skills/blob/main/plugins/clojure-libraries/skills/timbre/SKILL.md -a claude-code --skill timbreInstallation paths:
.claude/skills/timbre/# Timbre
Pure Clojure/Script logging library with zero dependencies, simple configuration, and powerful features like async logging, rate limiting, and flexible appenders.
## Overview
Timbre is a logging library designed for Clojure and ClojureScript applications. Unlike Java logging frameworks requiring XML or properties files, Timbre uses pure Clojure data structures for all configuration.
**Key characteristics:**
- Full Clojure and ClojureScript support
- Single config map - no XML/properties files
- Zero overhead compile-time level/namespace elision
- Built-in async logging and rate limiting
- Function-based appenders and middleware
- Optional tools.logging and SLF4J interop
**Library:** `com.taoensso/timbre`
**Latest Version:** 6.8.0
**License:** EPL-1.0
**Note:** For new projects, consider [Telemere](https://github.com/taoensso/telemere) - a modern rewrite of Timbre. Existing Timbre users have no pressure to migrate.
## Installation
```clojure
;; deps.edn
{:deps {com.taoensso/timbre {:mvn/version "6.8.0"}}}
;; Leiningen
[com.taoensso/timbre "6.8.0"]
```
## Core Concepts
### Log Levels
Seven standard levels in ascending severity:
- `:trace` - Detailed diagnostic information
- `:debug` - Debugging information
- `:info` - Informational messages
- `:warn` - Warning messages
- `:error` - Error messages
- `:fatal` - Critical failures
- `:report` - Special reporting level
### Appenders
Functions that handle log output: `(fn [data]) -> ?effects`
Each appender receives a data map containing:
- `:level` - Log level keyword
- `:?msg` - Log message
- `:timestamp` - When log occurred
- `:hostname` - System hostname
- `:?ns-str` - Namespace string
- `:?file`, `:?line` - Source location
- `:?err` - Exception (if present)
- Additional context data
### Middleware
Functions that transform log data: `(fn [data]) -> ?data`
Applied before appenders receive data, enabling:
- Data enrichment
- Filtering
- Transformation
- Context injection
### Configuration
Timb