diff options
Diffstat (limited to 'libatrace_rust/example/src/tracing_subscriber_sample.rs')
-rw-r--r-- | libatrace_rust/example/src/tracing_subscriber_sample.rs | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/libatrace_rust/example/src/tracing_subscriber_sample.rs b/libatrace_rust/example/src/tracing_subscriber_sample.rs new file mode 100644 index 00000000..b08fcdb4 --- /dev/null +++ b/libatrace_rust/example/src/tracing_subscriber_sample.rs @@ -0,0 +1,60 @@ +// Copyright (C) 2023 The Android Open Source Project +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +//! Usage sample for a tracing subscriber in libatrace_rust. + +use tracing::{debug, error, event, info, span, trace, warn, Level}; + +use atrace_tracing_subscriber::AtraceSubscriber; +use tracing_subscriber::{layer::SubscriberExt, util::SubscriberInitExt}; + +#[tracing::instrument] +fn mul_by_100_instrumented(num: i32) -> i32 { + let result = num * 100; + std::thread::sleep(std::time::Duration::from_millis(300)); + event!(Level::INFO, num, result); + result +} + +fn events_and_spans_demo() { + let power_level = 8999; + + event!(Level::INFO, foo = "bar", power_level, "This is a {} message", "formattable"); + std::thread::sleep(std::time::Duration::from_millis(100)); + + let span = span!(Level::TRACE, "Span name", baz = "quux"); + std::thread::sleep(std::time::Duration::from_millis(300)); + + let _span_guard = span.enter(); + + let _entered_span = span!(Level::TRACE, "Entered span").entered(); + std::thread::sleep(std::time::Duration::from_millis(300)); + + trace!("test {} log {}", "VERBOSE", mul_by_100_instrumented(42)); + debug!("test {} log", "DEBUG"); + info!("test {} log", "INFO"); + warn!("test {} log", "WARNING"); + error!("test {} log", "ERROR"); +} + +fn main() -> Result<(), Box<dyn std::error::Error>> { + tracing_subscriber::registry() + .with(AtraceSubscriber::default().with_filter()) + .with(tracing_subscriber::fmt::layer()) + .init(); + + events_and_spans_demo(); + + Ok(()) +} |