nr_tracing_layer/
lib.rs

1//! A tracing layer that sends logs to [New Relic](https://docs.newrelic.com/docs/logs/get-started/get-started-log-management/).
2//!
3//! ## Example
4//!
5//! ```rust
6//! use nr_tracing_layer::NewRelicOptions;
7//! use tracing_subscriber::prelude::*;
8//! use tracing::{instrument, subscriber};
9//!
10//! #[instrument]
11//! fn log(msg: &'static str) {
12//!   tracing::info!("your message: {}", msg);
13//! }
14//!
15//! fn main() {
16//!     let options = NewRelicOptions::new("my-service", "my-new-relic-api-key")
17//!         .with_tags("env:dev");
18//!     let dd = nr_tracing_layer::create(options);
19//!     let subscriber = tracing_subscriber::registry()
20//!         .with(tracing_subscriber::fmt::Layer::new().json())
21//!         .with(dd);
22//!     let _s = subscriber::set_default(subscriber);
23//!     log("hello world!");
24//! }
25//!```
26mod new_relic_ingestor;
27
28pub use log_tracing_layer::LogLayer;
29pub use new_relic_ingestor::{NewRelicOptions, Region};
30
31/// Creates a log layer that will send logs to New Relic.
32#[must_use]
33pub fn create(options: NewRelicOptions) -> LogLayer {
34    let ingestor = new_relic_ingestor::NewRelicLogIngestor::new(options);
35    LogLayer::new(ingestor)
36}