tracing-layer-slack

tracing-layer-slack
provides a Layer
implementation for sending tracing
events to Slack.
Synopsis
SlackLayer
sends POST requests via tokio
and reqwest
to a Slack Webhook URL for each new tracing event. The format of the text
field is statically defined.
This layer also looks for an optional JsonStorageLayer
extension
on the parent span
of each event. This extension may contain additional contextual information for the parent span of an event, which is included into the Slack message.
Installation
Configure the dependencies and pull directly from GitHub:
[dependencies]
tokio = "1.0"
tracing = "0.1"
tracing-futures = "0.2"
tracing-layer-slack = "0.3"
Examples
Slack Messages
Code example
use regex::Regex;
use tracing::{info, warn, instrument};
use tracing_subscriber::{layer::SubscriberExt, Registry};
use tracing_layer_slack::{EventFilters, SlackLayer};
#[instrument]
pub async fn create_user(id: u64) {
network_io(id).await;
info!(param = id, "A user was created");
}
#[instrument]
pub async fn network_io(id: u64) {
warn!(user_id = id, "had to retry the request once");
}
pub async fn controller() {
info!("Orphan event without a parent span");
tokio::join!(create_user(2), create_user(4), create_user(6));
}
#[tokio::main]
async fn main() {
let target_to_filter: EventFilters = Regex::new("simple").unwrap().into();
let (slack_layer, background_worker) = SlackLayer::builder(target_to_filter).build();
let subscriber = Registry::default().with(slack_layer);
tracing::subscriber::set_global_default(subscriber).unwrap();
controller().await;
background_worker.shutdown().await;
}