Commit graph

216 commits

Author SHA1 Message Date
Peter Taoussanis
cbab57be66 [fix] [#21] Work around issue with use in Cljs core.async/go bodies
Problem:
  (clojure.core.async/go (taoensso.telemere/log! "hello")) ; Compiles fine
  (cljs.core.async/go    (taoensso.telemere/log! "hello")) ; Compile fails

I could try to get to the bottom of exactly what's going on - but ultimately
IOC mechanisms like `go` are always going to be a bit fragile, especially for
heavily-optimized/unusual code.

In this case, the problem is thankfully only with Cljs - and Telemere's Cljs
performance isn't too critical - so I think we can afford to just bypass any
potential fiddling by the `go` macro by wrapping Cljs Telemere expansions in
an IIFE ((fn [] ...)).

Downside is the (small) added cost of a function construction and call.
Upside   is avoiding potential issues with core.async and other similar
IOC-style systems (Electric Clojure, etc.)
2024-09-20 22:55:12 +02:00
Peter Taoussanis
568906c96b [fix] [#20] Wrong :arglists meta on spy! 2024-09-20 22:55:12 +02:00
Peter Taoussanis
d9c3583631 [new] Add :rate-limit-by option to all signal creators
When present, will cause limits to be per [expansion, by-value]
2024-09-20 22:55:12 +02:00
Peter Taoussanis
f703630914 [mod] Update pr-signal-fn to use clean-signal-fn 2024-09-20 22:55:12 +02:00
Peter Taoussanis
be55f44a87 [new] Add clean-signal-fn util 2024-09-20 22:55:12 +02:00
Peter Taoussanis
d12b0b145b [new] Add signal-allowed? util
Useful for using Telemere's filtering features without generating
any signals, etc.
2024-09-20 22:55:12 +02:00
Peter Taoussanis
a9005e7f1c [mod] Rename taoensso.telemere.api -> taoensso.telemere.shell 2024-09-20 22:55:12 +02:00
Peter Taoussanis
965c2277fd [new] Allow compile-time config of uid kind 2024-09-20 22:55:12 +02:00
Peter Taoussanis
a09c628f23 [nop] Signal fields: revert to initial behaviour
Seems issue with "Electric Clojure" might not be on Telemere's side.
2024-09-20 22:55:12 +02:00
Peter Taoussanis
9b24b54215 [fix] Signal fields: define same fields regardless of platform
Attempted fix for possible issue with "Electric Clojure"
2024-09-20 22:55:12 +02:00
Peter Taoussanis
92a7aee530 [fix] Signal fields: define based on target (not macro) platform
Attempted fix for possible issue with "Electric Clojure"
2024-09-20 22:55:12 +02:00
Peter Taoussanis
f52a04b4dc [fix] [#18] Support {:uid :auto} for non-tracing signal creators 2024-09-20 22:55:12 +02:00
Peter Taoussanis
974df3e152 [doc] Drop suggested edn suffixes from env config 2024-09-20 22:55:12 +02:00
Peter Taoussanis
e4a0a41a1b [doc] Misc improvements 2024-09-20 22:55:12 +02:00
Peter Taoussanis
f9564b2fc5 [nop] Misc improvements 2024-09-20 09:37:28 +02:00
Peter Taoussanis
7e8f692b93 v1.0.0-SNAPSHOT 2024-08-28 18:43:36 +02:00
Peter Taoussanis
97f0eb5efd v1.0.0-beta22 (2024-08-28) 2024-08-28 18:35:25 +02:00
Peter Taoussanis
77ed27cfd1 [mod] Move dep: com.taoensso/slf4j-telemere -> com.taoensso/telemere-slf4j 2024-08-28 18:26:52 +02:00
Peter Taoussanis
ece51b2ef6 [new] Add experimental facade API for lib authors, etc. 2024-08-28 18:26:52 +02:00
Peter Taoussanis
0f09b797ed [fix] More robust mechanism for retaining nested macro callsite info 2024-08-28 16:54:57 +02:00
Peter Taoussanis
0e4942e99c [fix] :line unit tests 2024-08-28 16:54:55 +02:00
Peter Taoussanis
19cd1af3a4 [nop] Restructure repo 2024-08-28 16:53:31 +02:00
Peter Taoussanis
824ebc7802 [doc] Update docs and examples 2024-08-28 09:17:33 +02:00
Peter Taoussanis
96cc9e51f4 [nop] Misc housekeeping 2024-08-27 14:36:32 +02:00
Peter Taoussanis
3388103acf v1.0.0-SNAPSHOT 2024-08-26 22:14:56 +02:00
Peter Taoussanis
6032d2405e v1.0.0-beta21 (2024-08-26) 2024-08-26 13:19:43 +02:00
Peter Taoussanis
3068ccf8d7 [new] Simplify signal expansion 2024-08-26 13:13:33 +02:00
Peter Taoussanis
bbfe61106c [new] Add basic "full" bench numbers (to handled signals) 2024-08-26 13:13:33 +02:00
Peter Taoussanis
b4b06f324b [nop] Micro-optimize binding conveyance
Avoid repeatedly capturing the same callsite binding frame for each registered
handler. While the perf benefit of this change is minimal, the approach is also
conceptually cleaner.
2024-08-26 13:13:33 +02:00
Peter Taoussanis
8066776a80 [doc] Update docs and examples 2024-08-26 09:57:29 +02:00
Peter Taoussanis
54129e91a0 [nop] Misc housekeeping 2024-08-24 11:14:50 +02:00
Peter Taoussanis
9a0bdf92f2 v1.0.0-SNAPSHOT 2024-08-24 11:14:50 +02:00
Peter Taoussanis
b997a3549e v1.0.0-beta20 (2024-08-23) 2024-08-23 14:08:23 +02:00
Peter Taoussanis
ddc9480d20 [doc] Update docs and examples 2024-08-23 14:06:02 +02:00
Peter Taoussanis
84957c6d0a [new] OpenTelemetry handler: improve span interop
When this feature is enabled (see `otel-tracing?`), Telemere's tracing
signal creators (`trace!`, `spy!`, etc.) will now manipulate OpenTelemetry's
span context when relevant.

Before this commit:

  Telemere would detect and use OpenTelemetry span context, but
  the inverse wasn't true: OpenTelemetry instrumentation wouldn't
  recognize Telemere spans.

After this commit:

  Telemere detects OpenTelemetry span context, and the inverse is
  also true: OpenTelemetry instrumentation will recognize Telemere
  spans.

The net effect:

  When you use Telemere to trace forms that may themselves do
  auto/manual OpenTelemetry instrumentation - the resulting spans
  will now properly identify Telemere's spans as parents.

Note that this is interop is implemented in a unique way that retains
Telemere's usual benefits re: low costs at signal callsite, and ability
to skip costs when filtering / sampling / rate-limiting / etc.
2024-08-23 14:06:02 +02:00
Peter Taoussanis
ef678bcc36 [mod] Generalize "intake", rename -> "interop"
Extending feature to cover general interop like OpenTelemetry tracing, etc.
2024-08-23 14:05:46 +02:00
Peter Taoussanis
88eb5211f7 [mod] Make :host output opt-in for default signal handlers 2024-08-23 13:59:22 +02:00
Peter Taoussanis
331bea7a51 [nop] Misc housekeeping 2024-08-22 17:40:17 +02:00
Peter Taoussanis
58b3af893c v1.0.0-SNAPSHOT 2024-08-22 16:20:04 +02:00
Peter Taoussanis
b44eb106a3 v1.0.0-beta19 (2024-08-20) 2024-08-20 19:28:16 +02:00
Peter Taoussanis
064ef32377 [mod] OpenTelemetry handler: rename (generalize)
Handler now does more than just logging.
2024-08-20 19:25:53 +02:00
Peter Taoussanis
a8e92303fa [fix] OpenTelemetry handler: use signal callsite Context as root span parent 2024-08-20 19:25:44 +02:00
Peter Taoussanis
17349a0840 [fix] [#16] OpenTelemetry handler: coerce line attrs (@flyingmachine) 2024-08-20 19:20:56 +02:00
Peter Taoussanis
a1c50f1031 [fix] Decrease min Java version (11->8) (@flyingmachine) 2024-08-20 19:20:56 +02:00
Peter Taoussanis
5b30acc897 [nop] Housekeeping 2024-08-20 18:55:12 +02:00
Peter Taoussanis
c2ad207b18 [doc] New handlers table 2024-08-20 15:14:20 +02:00
Peter Taoussanis
7dc695a18c [doc] Misc improvements 2024-08-20 15:14:20 +02:00
Peter Taoussanis
1c58d99337 v1.0.0-beta18 (2024-08-19) 2024-08-19 16:26:33 +02:00
Peter Taoussanis
290dfe268d [fix] Properly ignore internal :otel-context key 2024-08-19 16:25:13 +02:00
Peter Taoussanis
8b58be68a2 [new] OpenTelemetry handler: auto capture signal context 2024-08-19 16:06:07 +02:00