11 releases

0.3.0 Dec 24, 2023
0.2.0 Oct 4, 2023
0.1.8 Sep 20, 2023
0.1.3 Jan 31, 2023

#1012 in Development tools

Download history 13/week @ 2023-12-19 3/week @ 2023-12-26 32/week @ 2024-01-16 95/week @ 2024-01-23 104/week @ 2024-01-30 86/week @ 2024-02-06 9/week @ 2024-02-13 48/week @ 2024-02-20 41/week @ 2024-02-27 33/week @ 2024-03-05 307/week @ 2024-03-12 21/week @ 2024-03-19 2/week @ 2024-03-26 28/week @ 2024-04-02

365 downloads per month

MIT license

26KB
431 lines

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.

Dependencies

~10–25MB
~350K SLoC