From 58c52d31a6f36545a792fbb6697d34d4464d4a2a Mon Sep 17 00:00:00 2001 From: Aleksey <19895415+Jackhammer88@users.noreply.github.com> Date: Fri, 15 Aug 2025 13:48:38 +0300 Subject: [PATCH] Added example of structured logging in Rust --- .../operations/function/logs-write.md | 46 +++++++++++++++++++ 1 file changed, 46 insertions(+) diff --git a/ru/functions/operations/function/logs-write.md b/ru/functions/operations/function/logs-write.md index 93e3af6f33..6f88e62a68 100644 --- a/ru/functions/operations/function/logs-write.md +++ b/ru/functions/operations/function/logs-write.md @@ -366,5 +366,51 @@ description: Следуя данной инструкции, вы сможете } } ``` +- Rust {#rust} + + **Cargo.toml** + ``` + [dependencies] + tracing = "0.1.*" + tracing-subscriber = { version = "0.3.*", features = ["std", "env-filter", "time", "json"] } + ``` + + **main.rs** + ```rust + use tracing_subscriber::{ + fmt, + layer::SubscriberExt, + util::SubscriberInitExt, + EnvFilter, + }; + use tracing_subscriber::fmt::time::UtcTime; + + pub fn init_tracing() { + let env_filter = EnvFilter::try_from_default_env() + .unwrap_or_else(|_| EnvFilter::new("info")); + + let fmt_layer = fmt::layer() + .json() + .flatten_event(true) + .with_timer(UtcTime::rfc_3339()) + .with_ansi(false) + .with_target(false) + .with_thread_ids(false) + .with_thread_names(false) + .with_writer(std::io::stderr) + .with_filter(env_filter); + + tracing_subscriber::registry() + .with(fmt_layer) + .init(); + } + + fn main() { + init_tracing(); + + tracing::info!(my_key = "my-value", "My log message"); + tracing::error!(error_code = 42, "Something went wrong"); + } + ``` {% endlist %}