mirror of
https://github.com/tokio-rs/tokio.git
synced 2026-08-19 00:00:09 +02:00
## Motivation `tokio-trace` currently offers a strategy for compatibility with the `log` crate: its macros can be dropped in as a replacement for `log`'s macros, and a subscriber can be used that translates trace events to log records. However, this requires the application to be aware of `tokio-trace` and manually set up this subscriber. Many libraries currently emit `log` records, and would like to be able to emit `tokio-trace` instrumentation instead. The `tokio` runtimes are one such example. However, with the current log compatibility strategy, replacing existing logging with trace instrumentation would break `tokio`'s logs for any downstream user which is using only `log` and not `tokio-trace`. It is desirable for libraries to have the option to emit both `log` _and_ `tokio-trace` diagnostics from the same instrumentation points. ## Solution This branch adds a `log` feature flag to the `tokio-trace` crate, which when set, causes `tokio-trace` instrumentation to emit log records as well as `tokio-trace` instrumentation. ## Notes In order to allow spans to log their names when they are entered and exited even when the span is disabled, this branch adds an `&'static Metadata` to the `Span` type. This was previously stored in the `Inner` type and was thus only present when the span was enabled. This makes disabled spans one word longer, but enabled spans remain the same size. Fixes: #949 Signed-off-by: Eliza Weisman <[email protected]>
48 lines
1.2 KiB
TOML
48 lines
1.2 KiB
TOML
[package]
|
|
name = "tokio-trace"
|
|
version = "0.0.1"
|
|
authors = ["Eliza Weisman <[email protected]>"]
|
|
license = "MIT"
|
|
repository = "https://github.com/tokio-rs/tokio"
|
|
homepage = "https://tokio.rs"
|
|
description = """
|
|
A scoped, structured logging and diagnostics system.
|
|
"""
|
|
categories = ["development-tools::debugging", "asynchronous"]
|
|
keywords = ["logging", "tracing"]
|
|
|
|
# Not yet ready for production.
|
|
publish = false
|
|
|
|
[dependencies]
|
|
tokio-trace-core = "0.1"
|
|
log = { version = "0.4", optional = true }
|
|
cfg-if = "0.1.7"
|
|
|
|
[dev-dependencies]
|
|
ansi_term = "0.11"
|
|
humantime = "1.1.1"
|
|
futures = "0.1"
|
|
log = "0.4"
|
|
# These are used for the "basic" example from the tokio-trace-prototype repo,
|
|
# which is currently not included as it used the `tokio-trace-log` crate, and
|
|
# that crate is currently unstable.
|
|
# env_logger = "0.5"
|
|
# tokio-trace-log = { path = "../tokio-trace-log" }
|
|
|
|
[features]
|
|
max_level_off = []
|
|
max_level_error = []
|
|
max_level_warn = []
|
|
max_level_info = []
|
|
max_level_debug = []
|
|
max_level_trace = []
|
|
|
|
release_max_level_off = []
|
|
release_max_level_error = []
|
|
release_max_level_warn = []
|
|
release_max_level_info = []
|
|
release_max_level_debug = []
|
|
release_max_level_trace = []
|
|
|