Files
firezone/rust/relay/Cargo.toml
Thomas Eizinger 73eebd2c4d refactor(rust): consistently record errors as tracing::Value (#7104)
Our logging library, `tracing` supports structured logging. This is
useful because it preserves the more than just the string representation
of a value and thus allows the active logging backend(s) to capture more
information for a particular value.

In the case of errors, this is especially useful because it allows us to
capture the sources of a particular error.

Unfortunately, recording an error as a tracing value is a bit cumbersome
because `tracing::Value` is only implemented for `&dyn
std::error::Error`. Casting an error to this is quite verbose. To make
it easier, we introduce two utility functions in `firezone-logging`:

- `std_dyn_err`
- `anyhow_dyn_err`

Tracking errors as correct `tracing::Value`s will be especially helpful
once we enable Sentry's `tracing` integration:
https://docs.rs/sentry-tracing/latest/sentry_tracing/#tracking-errors
2024-10-22 04:46:26 +00:00

56 lines
1.6 KiB
TOML

[package]
name = "firezone-relay"
version = "0.1.0"
edition = "2021"
[dependencies]
anyhow = "1.0.82"
backoff = "0.4"
base64 = "0.22.1"
bytecodec = "0.4.15"
bytes = "1.7.1"
clap = { version = "4.5.19", features = ["derive", "env"] }
derive_more = { version = "1.0.0", features = ["from"] }
firezone-bin-shared = { workspace = true }
firezone-logging = { workspace = true }
futures = "0.3.29"
hex = "0.4.3"
hex-display = "0.3.0"
mio = { version = "1.0.1", features = ["net"] }
once_cell = "1.17.1"
opentelemetry = { version = "0.24.0", features = ["metrics"] }
opentelemetry-otlp = { version = "0.17.0", features = ["metrics"] }
opentelemetry_sdk = { version = "0.24.1", features = ["rt-tokio"] }
phoenix-channel = { path = "../phoenix-channel" }
proptest = { version = "1", optional = true }
rand = "0.8.5"
rustls = { workspace = true }
secrecy = { workspace = true }
serde = { version = "1.0.210", features = ["derive"] }
sha2 = "0.10.8"
smallvec = "1.13.2"
socket-factory = { workspace = true }
socket2 = { workspace = true }
stun_codec = "0.3.4"
tokio = { workspace = true, features = ["macros", "rt-multi-thread", "net", "time", "signal"] }
tracing = { workspace = true, features = ["log"] }
tracing-core = "0.1.31"
tracing-opentelemetry = "0.25.0"
tracing-stackdriver = { version = "0.11.0", features = ["opentelemetry"] }
tracing-subscriber = { workspace = true, features = ["env-filter", "json", "fmt"] }
trackable = "1.3.0"
url = "2.5.2"
uuid = { version = "1.10.0", features = ["v4"] }
[dev-dependencies]
difference = "2.0.0"
env_logger = "0.11.3"
test-strategy = "0.3.1"
[[test]]
name = "regression"
required-features = ["proptest"]
[lints]
workspace = true