dd-tracing-layer

Crates.iodd-tracing-layer
lib.rsdd-tracing-layer
version0.4.0
sourcesrc
created_at2023-01-29 23:40:10.623593
updated_at2024-09-18 00:09:00.662647
descriptionSend your logs to Datadog
homepage
repositoryhttps://github.com/robertohuertasm/log-tracing-layer
max_upload_size
id771283
size18,481
Roberto Huertas (robertohuertasm)

documentation

README

dd-tracing-layer

license crates.io docs.rs

A tracing layer that sends logs to the Datadog Log API.

It's mainly useful when you don't have access to your infrastructure and you cannot use the Datadog Agent or any other mean.

Requirements

You'll need a Datadog API Key for everything to work.

Endpoint

This crate uses the v2 logs endpoints and, by default, will try to send the logs to the US1 region.

You can easily change the region or provide a custom URL if needed.

Example

Here's a simple example of how to set it up and use it:

use dd_tracing_layer::DatadogOptions;
use tracing_subscriber::prelude::*;
use tracing::{instrument, subscriber};

#[instrument]
fn log(msg: &'static str) {
    tracing::info!("your message: {}", msg);
}

fn main() {
    let options = DatadogOptions::new("my-service", "my-datadog-api-key")
        .with_tags("env:dev");
    let dd = dd_tracing_layer::create(options);
    let subscriber = tracing_subscriber::registry()
        .with(tracing_subscriber::fmt::Layer::new().json())
        .with(dd);
    let _s = subscriber::set_default(subscriber);
    log("hello world!");
}

Caveats

The layer will send the logs either 5 seconds after the last log is received or when the buffer arrives to 1000 logs. This is basically due to a limitation in the Datadog API.

Commit count: 18

cargo fmt