Structured logs and telemetry for Clojure/Script
Find a file
2024-04-12 17:50:06 +02:00
.github/workflows [new] Add Clojure v1.12, JVM v21 to tests 2024-03-11 11:36:26 +01:00
bb [new] Add initial code, content 2024-03-08 10:35:10 +01:00
doc [new] Add initial code, content 2024-03-08 10:35:10 +01:00
imgs [nop] Update, relocate imgs 2024-04-12 17:50:06 +02:00
public [new] Add basic shadow-cljs setup 2024-03-28 16:24:08 +01:00
resources/signal-docstrings [mod] Rename signal field: :extra-kvs -> :kvs 2024-04-12 16:54:13 +02:00
slf4j v1.0.0-alpha4 (2024-04-10) 2024-04-10 18:42:09 +02:00
src/taoensso [new] Prevent common signal opts errors 2024-04-12 17:50:06 +02:00
test/taoensso [new] Prevent common signal opts errors 2024-04-12 17:50:06 +02:00
wiki [new] Add initial code, content 2024-03-08 10:35:10 +01:00
.gitignore [new] Add archiving file handler 2024-04-05 17:51:14 +02:00
bb.edn [new] Add initial code, content 2024-03-08 10:35:10 +01:00
CHANGELOG.md [new] Add initial code, content 2024-03-08 10:35:10 +01:00
examples.cljc [nop] Misc housekeeping 2024-03-14 10:23:23 +01:00
FUNDING.yml [new] Add initial code, content 2024-03-08 10:35:10 +01:00
LICENSE.txt [nop] Add initial LICENSE.txt 2023-08-28 12:13:21 +02:00
project.clj [nop] Misc housekeeping 2024-04-12 16:54:13 +02:00
README.md v1.0.0-alpha4 (2024-04-10) 2024-04-10 18:42:09 +02:00
SECURITY.md [new] Add initial code, content 2024-03-08 10:35:10 +01:00
shadow-cljs.edn [nop] Misc housekeeping 2024-04-12 16:54:13 +02:00
shadow-cljs.sh [new] Add basic shadow-cljs setup 2024-03-28 16:24:08 +01:00

Taoensso open source
Documentation | Latest releases | Get support

Telemere

Structured telemetry library for Clojure/Script

This library is still under development, ETA: April 2024.

Telemere handles traditional and structured logging, tracing, and performance measurement with one clean, simple, unified API.

It's a next-generation observability toolkit and modern replacement for Timbre, representing the refinement and culmination of ideas brewing over Timbre's 12+ years in a wide variety of real-world Clojure/Script environments.

Latest release/s

Main tests Graal tests

See here for earlier releases.

Why Telemere?

Usability

  • Simple, lightweight API that's easy to use, easy to configure, and deeply flexible.
  • Sensible defaults to make getting started fast and easy.
  • Extensive beginner-oriented documentation and docstrings.

Interop

Performance

  • Hyper-optimized and blazing fast, see benchmarks.
  • Scales comfortably from the smallest disposable code, to the most massive and complex production environments.

Flexibility

  • Config via plain Clojure vals and fns for easy customization, composition, and REPL debug.
  • Top-notch support for environmental config (JVM props, ENV vars, edn resources, etc.).
  • Expressive per-call and per-handler filtering at both runtime and compile-time.
  • Easily filter by namespace and id pattern, level, level by namespace pattern, etc.
  • Support for auto sampling, rate-limiting, and back-pressure monitoring.
  • Support for fully configurable a/sync dispatch (blocking, dropping, sliding, etc.).

Video demo

See for intro and usage: (TODO: coming later)

Telemere demo video

Quick example

;; TODO: coming later

Observability tips

See here for general advice re: building and maintaining highly observable Clojure/Script systems.

Benchmarks

Telemere is highly optimized and offers terrific performance at any scale:

Compile-time filtering? Runtime filtering? Time? Trace? nsecs
✓ (elide) - - - 0
- - - 200
- - 280
- 650

Measurements:

  • Are ~nanoseconds per signal call (= milliseconds per 1e6 calls)
  • Exclude handler runtime (which depends on handler/s, is usually async)
  • Taken on a 2020 Macbook Pro M1, running OpenJDK 21

Tip: Telemere offers extensive per-call and per-handler filtering, sampling, and rate-limiting. Use these to ensure that you're not capturing useless/low-value information in production. See here for more tips!

Documentation

  • Wiki (getting started, usage, etc.) (TODO: coming later)
  • API reference: Codox, clj-doc

Funding

You can help support continued work on this project, thank you!! 🙏

License

Copyright © 2023-2024 Peter Taoussanis.
Licensed under EPL 1.0 (same as Clojure).