{"slug": "tracing", "name": "tracing", "category": "observability", "category_name": "Monitoring and analytics", "description": "", "recommenders": 4, "commenters": 6, "warners": 1, "score": 2.692, "rising": -1.31, "first": "2025-11-24", "latest": "2026-03-13", "why": "tracing and color_eyre (see https://docs.rs/color-eyre/latest/color_eyre/) form a good-enough pair for service style applications", "why_is_quote": true, "has_verdict": false, "sentiment": {"recommend": 4, "neutral": 1, "compare": 0, "warn": 1}, "spark": [1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0], "listed": true, "loved": [], "caveat": "", "short_quote": "tracing and color_eyre (see https://docs.rs/color-eyre/latest/color_eyre/) form a good-enough pair for service style applications", "kind": "", "icon": false, "domain": null, "github_repo": "github.com/tokio-rs/tracing", "official_url": "https://github.com/tokio-rs/tracing", "pricing": "", "aliases": ["tracing"], "verdict": null, "praise": [{"label": "", "summary": "", "quotes": [{"id": 757949218, "item_id": 47371826, "url": "https://news.ycombinator.com/item?id=47371826", "by": "wise0wl", "date": "2026-03-13", "stance": "recommend", "quote": "The `tracing` crate in rust also has a macro called `instrument` that allows you to mostly auto-instrument your functions", "excerpt": "The OpenTelemetry spec is absolutely what folks have been waiting for for as long as I've been in computing (~20 years). A single standard that is implemented in nearly every popular language with very close feature parity. It's honestly wonderful to work with compared to the old vendor supplied frameworks. I took it upon myself to write a library for my current employer (4yrs ago now?) that abstracted and standardiz", "context": "", "use_case": "auto-instrumenting Rust functions", "switched_from": "", "story": "OpenTelemetry for Rust Developers"}, {"id": 743908449, "item_id": 46494278, "url": "https://news.ycombinator.com/item?id=46494278", "by": "spion", "date": "2026-01-04", "stance": "recommend", "quote": "tracing and color_eyre (see https://docs.rs/color-eyre/latest/color_eyre/) form a good-enough pair for service style applications", "excerpt": "Great article. Really advances the thinking on error handling. Rust already has a head start compared to most other languages with Result, expect and anyhow (well, color_eyre and tracing), but there was indeed a missing piece tying together error handling \"actionability\" with \"better than stack trace\" context for the programmer. With regards to context for the programmer, I still think ultimately tracing and color_ey", "context": "", "use_case": "programmer context for errors", "switched_from": "", "story": "Stop Forwarding Errors, Start Designing Them"}, {"id": 740017457, "item_id": 46251091, "url": "https://news.ycombinator.com/item?id=46251091", "by": "seniorsassycat", "date": "2025-12-12", "stance": "recommend", "quote": "Log4j and tracing seem to be well established without being built in", "excerpt": "I really want something like this to be built into the language or runtime, I don't want to juggle configuration for 4 different libraries. Log4j and tracing seem to be well established without being built in, but it feels too late for js. I'm curious if this is enough https://nodejs.org/api/diagnostics_channel.html I don't like the js hotel libraries, their docs feel deliberately obtuse", "context": "", "use_case": "", "switched_from": "", "story": "I couldn't find a logging library that worked for my library, so I made one"}, {"id": 736584336, "item_id": 46036521, "url": "https://news.ycombinator.com/item?id=46036521", "by": "iknowstuff", "date": "2025-11-24", "stance": "recommend", "quote": "there are more fancy crates like http://lib.rs/tracing and https://lib.rs/crates/log", "excerpt": "println!() exists but there are more fancy crates like http://lib.rs/tracing and https://lib.rs/crates/log", "context": "", "use_case": "", "switched_from": "", "story": "Shai-Hulud Returns: Over 300 NPM Packages Infected"}]}], "caveats": [{"label": "", "summary": "", "quotes": [{"id": 757951185, "item_id": 47371949, "url": "https://news.ycombinator.com/item?id=47371949", "by": "zamalek", "date": "2026-03-13", "stance": "warn", "quote": "Except for this, that is: https://github.com/tokio-rs/tracing/issues/2519", "excerpt": "I have OTEL + Rust in production, alongside some other languages (+ OTEL), and it is by far more useful and predictable than the others. I often find myself monkey-patching in logging for other language libraries, where with Rust it just works. (Except for this, that is: https://github.com/tokio-rs/tracing/issues/2519)", "context": "", "use_case": "", "switched_from": "", "story": "OpenTelemetry for Rust Developers"}]}], "who": [], "tags": [], "use_cases": ["auto-instrumenting rust functions", "programmer context for errors", "rust instrumentation"], "compared": [{"slug": "opentelemetry", "name": "OpenTelemetry", "co": 2, "switched_from": 0, "switched_to": 0}, {"slug": "log", "name": "log", "co": 2, "switched_from": 0, "switched_to": 0}], "makers": [], "threads": [{"url": "https://news.ycombinator.com/item?id=47321579", "title": "OpenTelemetry for Rust Developers", "mentions": 2}, {"url": "https://news.ycombinator.com/item?id=46491051", "title": "Stop Forwarding Errors, Start Designing Them", "mentions": 1}, {"url": "https://news.ycombinator.com/item?id=46245211", "title": "I couldn't find a logging library that worked for my library, so I made one", "mentions": 1}, {"url": "https://news.ycombinator.com/item?id=46153466", "title": "Thoughts on Go vs. Rust vs. Zig", "mentions": 1}, {"url": "https://news.ycombinator.com/item?id=46032539", "title": "Shai-Hulud Returns: Over 300 NPM Packages Infected", "mentions": 1}], "sentiment_by_month": {"2025-11": {"recommend": 1}, "2025-12": {"neutral": 1, "recommend": 1}, "2026-01": {"recommend": 1}, "2026-02": {}, "2026-03": {"recommend": 1, "warn": 1}, "2026-04": {}, "2026-05": {}, "2026-06": {}, "2026-07": {}, "2026-08": {}, "2026-09": {}, "2026-10": {}}, "quotes": [{"id": 757951185, "item_id": 47371949, "url": "https://news.ycombinator.com/item?id=47371949", "by": "zamalek", "date": "2026-03-13", "stance": "warn", "quote": "Except for this, that is: https://github.com/tokio-rs/tracing/issues/2519", "excerpt": "I have OTEL + Rust in production, alongside some other languages (+ OTEL), and it is by far more useful and predictable than the others. I often find myself monkey-patching in logging for other language libraries, where with Rust it just works. (Except for this, that is: https://github.com/tokio-rs/tracing/issues/2519)", "context": "", "use_case": "", "switched_from": "", "story": "OpenTelemetry for Rust Developers"}, {"id": 757949218, "item_id": 47371826, "url": "https://news.ycombinator.com/item?id=47371826", "by": "wise0wl", "date": "2026-03-13", "stance": "recommend", "quote": "The `tracing` crate in rust also has a macro called `instrument` that allows you to mostly auto-instrument your functions", "excerpt": "The OpenTelemetry spec is absolutely what folks have been waiting for for as long as I've been in computing (~20 years). A single standard that is implemented in nearly every popular language with very close feature parity. It's honestly wonderful to work with compared to the old vendor supplied frameworks. I took it upon myself to write a library for my current employer (4yrs ago now?) that abstracted and standardiz", "context": "", "use_case": "auto-instrumenting Rust functions", "switched_from": "", "story": "OpenTelemetry for Rust Developers"}, {"id": 743908449, "item_id": 46494278, "url": "https://news.ycombinator.com/item?id=46494278", "by": "spion", "date": "2026-01-04", "stance": "recommend", "quote": "tracing and color_eyre (see https://docs.rs/color-eyre/latest/color_eyre/) form a good-enough pair for service style applications", "excerpt": "Great article. Really advances the thinking on error handling. Rust already has a head start compared to most other languages with Result, expect and anyhow (well, color_eyre and tracing), but there was indeed a missing piece tying together error handling \"actionability\" with \"better than stack trace\" context for the programmer. With regards to context for the programmer, I still think ultimately tracing and color_ey", "context": "", "use_case": "programmer context for errors", "switched_from": "", "story": "Stop Forwarding Errors, Start Designing Them"}, {"id": 740017457, "item_id": 46251091, "url": "https://news.ycombinator.com/item?id=46251091", "by": "seniorsassycat", "date": "2025-12-12", "stance": "recommend", "quote": "Log4j and tracing seem to be well established without being built in", "excerpt": "I really want something like this to be built into the language or runtime, I don't want to juggle configuration for 4 different libraries. Log4j and tracing seem to be well established without being built in, but it feels too late for js. I'm curious if this is enough https://nodejs.org/api/diagnostics_channel.html I don't like the js hotel libraries, their docs feel deliberately obtuse", "context": "", "use_case": "", "switched_from": "", "story": "I couldn't find a logging library that worked for my library, so I made one"}, {"id": 738807857, "item_id": 46175491, "url": "https://news.ycombinator.com/item?id=46175491", "by": "whytevuhuni", "date": "2025-12-06", "stance": "neutral", "quote": "There is also \"tracing\" which uses thread local storage.", "excerpt": "In Rust you typically use the \"log\" crate, which also has a global logger instance [0]. There is also \"tracing\" which uses thread local storage. As another comment said, global state is allowed. It just has to be proven thread-safe via Rust's Send and Sync traits, and 'static lifetime. I've used things like LazyLock and ArcSwap to achieve this in the past. [0] https://docs.rs/log/latest/log/fn.set_logger.html", "context": "", "use_case": "Rust instrumentation", "switched_from": "", "story": "Thoughts on Go vs. Rust vs. Zig"}, {"id": 736584336, "item_id": 46036521, "url": "https://news.ycombinator.com/item?id=46036521", "by": "iknowstuff", "date": "2025-11-24", "stance": "recommend", "quote": "there are more fancy crates like http://lib.rs/tracing and https://lib.rs/crates/log", "excerpt": "println!() exists but there are more fancy crates like http://lib.rs/tracing and https://lib.rs/crates/log", "context": "", "use_case": "", "switched_from": "", "story": "Shai-Hulud Returns: Over 300 NPM Packages Infected"}]}