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
10
11pub mod filters;
12mod worker;
13pub mod layer;
14mod aws_lambda;
15
16pub type ChannelSender = tokio::sync::mpsc::UnboundedSender<WorkerMessage>;
17pub type ChannelReceiver = tokio::sync::mpsc::UnboundedReceiver<WorkerMessage>;
18
19pub trait WebhookMessage: Debug + Send + Sync {
21 fn webhook_url(&self) -> &str;
22 fn serialize(&self) -> String;
23}
24
25pub trait WebhookMessageFactory {
26 fn create(inputs: WebhookMessageInputs) -> impl WebhookMessage;
27}
28
29
30pub struct WebhookMessageInputs {
32 pub app_name: String,
33 pub message: String,
34 pub target: String,
35 pub span: String,
36 pub metadata: String,
37 pub webhook_url: String,
38 pub source_line: u32,
39 pub source_file: String,
40 pub event_level: Level,
41}
42
43#[allow(dead_code)]
44#[derive(Clone, Debug)]
45pub enum WebhookMessageSpec {
46 TextNoEmbed(String),
47 TextWithEmbed(String, Vec<Value>),
48 EmbedNoText(Vec<Value>),
49}
50
51pub trait Config {
52 fn webhook_url(&self) -> &str;
53
54 fn new_from_env() -> Self
55 where
56 Self: Sized;
57}
58
59#[cfg(test)]
60mod tests {}