tracing_layer_core/
lib.rs1use std::fmt::Debug;
2
3use serde_json::Value;
4use tracing::Level;
5
6pub use filters::EventFilters;
7pub use worker::BackgroundWorker;
8pub use worker::WorkerMessage;
9
10pub mod filters;
12pub mod layer;
13mod worker;
14
15pub type ChannelSender = tokio::sync::mpsc::UnboundedSender<WorkerMessage>;
16pub type ChannelReceiver = tokio::sync::mpsc::UnboundedReceiver<WorkerMessage>;
17
18pub trait WebhookMessage: Debug + Send + Sync {
20 fn webhook_url(&self) -> &str;
21 fn serialize(&self) -> String;
22}
23
24pub trait WebhookMessageFactory {
25 fn create(inputs: WebhookMessageInputs) -> impl WebhookMessage;
26}
27
28pub struct WebhookMessageInputs {
30 pub app_name: String,
31 pub message: String,
32 pub target: String,
33 pub span: String,
34 pub metadata: String,
35 pub webhook_url: String,
36 pub source_line: u32,
37 pub source_file: String,
38 pub event_level: Level,
39}
40
41#[allow(dead_code)]
42#[derive(Clone, Debug)]
43pub enum WebhookMessageSpec {
44 TextNoEmbed(String),
45 TextWithEmbed(String, Vec<Value>),
46 EmbedNoText(Vec<Value>),
47}
48
49pub trait Config {
50 fn webhook_url(&self) -> &str;
51
52 fn new_from_env() -> Self
53 where
54 Self: Sized;
55}
56
57#[cfg(test)]
58mod tests {}