tracing::subscriber::set_global_default(subscriber) .expect("setting default subscriber failed"); // ... application code } 异步跟踪 使用#[tracing::instrument]宏跟踪异步函数 自动创建 Span,记录函数的执行过程 示例代码: use tracing::{info, instrument}; #[instrument] async fn do_work() { info!
2024-09-21T08:24:52.958184Z INFO play_tracing: 这个事件的父 span 为空, tokio::spawn 出的新任务不能追踪到父 span,需要手动指定 at examples\play_tracing.rs:72 2024-09-21T08:24:52.958306Z INFO play_tracing: 使用 instrument 创建一个新 span 并追踪父 span at examples\play_tracing.rs:79 in ...
#[instrument] // tracing 会为当前函数自动创建 span ,该 span 名与函数相同,并且整个函数都在该 span 的上下文内fn do_something() { // some event let span = span!(Level::INFO, "external function"); span.in_scope(|| some_external_function()); //对于无法添加 #[instrument] 的...
:spawn(asyncmove{handle_client(stream).instrument(span!(Level::INFO,"handle_client")).await.unwrap_or_else(|e| error!("error: {:?}", e));});}Ok(())}在这个函数中,我们使用 tokio::spawn 来启动一个新的异步任务来处理每个客户端连接。我们还使用 Tracing 来记录我们的应用程序行为和性能。...
为了高效集成和管理 Tracing,最佳实践推荐全局初始化标签与元数据。通过 trcining::span::Attributes 设置 Span 的属性,增强追踪信息的丰富性。此外,错误处理与 trcining::instrument 跟踪机制,确保追踪信息在异常情况下仍能正确捕获和传播。性能优化:减少 Span 创建、高效过滤与异步日志处理 优化 Tracing...
创建一个名为rust-app-tracing的新目录。在终端中切换到该目录,并运行以下命令初始化一个新的 Rust 项目。 代码语言:javascript 代码运行次数:0 运行 AI代码解释 cargonewweb-api 让我们还要确保在web-api/Cargo.toml文件中拥有所需的依赖项。 actix-web:用于在 Rust 中构建 Web 应用程序的快速 Web 框架。
#[tracing::instrument( name = "Save new subscriber detial in database", skip(new_subscriber, pool) )] pub async fn insert_subscriber( pool: &PgPool, new_subscriber: &NewSubscriber, ) -> Result<(), sqlx::Error> { sqlx::query!( ...
tracing-subscriber = "0.3" # For setting up subscribers Example: Tracing in Action Below is an example that demonstrates basic usage of the tracing crate. Code: // Import the tracing macros and setup functions use tracing::{info, instrument, span, Level}; ...
uselambda_runtime::{service_fn, Error, LambdaEvent};useserde_json::{json, Value};#[tracing::instrument(skip(event), fields(req_id = %event.context.request_id))]asyncfnhandler(event: LambdaEvent<Value>) ->Result<Value, Error>{tracing::info!("Rust function invoked");letpayload = event...
jaegertracing/jaeger-query:latest restart: always depends_on: - quickwit environment: SPAN_STORAGE_TYPE: 'grpc-plugin' GRPC_STORAGE_SERVER: 'quickwit:7281' ports: - '16686:16686' grafana: image: grafana/grafana-enterprise:latest restart: always user: root depends_on: - quickwit environment: ...