ts_opentelemetry_stdout/lib.rs
1//! Export telemetry signals to stdout.
2//!
3//! # Examples
4//!
5//! ```no_run
6//! # #[cfg(all(feature = "metrics", feature = "trace"))]
7//! {
8//! use ts_opentelemetry_api::metrics::MeterProvider as _;
9//! use ts_opentelemetry_api::trace::{Span, Tracer, TracerProvider as _};
10//! use ts_opentelemetry_api::{Context, KeyValue};
11//!
12//! use ts_opentelemetry_sdk::metrics::{MeterProvider, PeriodicReader};
13//! use ts_opentelemetry_sdk::runtime;
14//! use ts_opentelemetry_sdk::trace::TracerProvider;
15//!
16//! fn init_trace() -> TracerProvider {
17//! let exporter = opentelemetry_stdout::SpanExporter::default();
18//! TracerProvider::builder()
19//! .with_simple_exporter(exporter)
20//! .build()
21//! }
22//!
23//! fn init_metrics() -> MeterProvider {
24//! let exporter = opentelemetry_stdout::MetricsExporter::default();
25//! let reader = PeriodicReader::builder(exporter, runtime::Tokio).build();
26//! MeterProvider::builder().with_reader(reader).build()
27//! }
28//!
29//! let tracer_provider = init_trace();
30//! let meter_provider = init_metrics();
31//!
32//! // recorded traces and metrics will now be sent to stdout:
33//!
34//! // {"resourceMetrics":{"resource":{"attributes":[{"key":"service.name","value":{"str..
35//! // {"resourceSpans":[{"resource":{"attributes":[{"key":"service.name","value":{"stri..
36//! # }
37//! ```
38#![warn(missing_debug_implementations, missing_docs)]
39
40pub(crate) mod common;
41
42#[cfg(feature = "metrics")]
43mod metrics;
44#[cfg_attr(docsrs, doc(cfg(feature = "metrics")))]
45#[cfg(feature = "metrics")]
46pub use metrics::*;
47
48#[cfg(feature = "trace")]
49mod trace;
50#[cfg_attr(docsrs, doc(cfg(feature = "trace")))]
51#[cfg(feature = "trace")]
52pub use trace::*;
53
54#[cfg(feature = "logs")]
55mod logs;
56#[cfg_attr(docsrs, doc(cfg(feature = "logs")))]
57#[cfg(feature = "logs")]
58pub use logs::*;