#tracing-layer #webhook #tracing #layer #filter #async

tracing-layer-core

将过滤后的跟踪事件发送到 webhook 端点

4 个版本 (2 个破坏性版本)

0.3.0 2024 年 7 月 3 日
0.2.1 2024 年 4 月 21 日
0.2.0 2024 年 4 月 15 日
0.1.0 2024 年 4 月 15 日

#352调试

Download history 264/week @ 2024-04-14 171/week @ 2024-04-21 27/week @ 2024-04-28 3/week @ 2024-05-05 38/week @ 2024-05-12 24/week @ 2024-05-19 10/week @ 2024-05-26 30/week @ 2024-06-02 38/week @ 2024-06-09 5/week @ 2024-06-16 6/week @ 2024-06-23 123/week @ 2024-06-30 10/week @ 2024-07-07 8/week @ 2024-07-14 22/week @ 2024-07-21 15/week @ 2024-07-28

每月 61 次下载
用于 2 crates

Apache-2.0

32KB
433 代码行

tracing-layer-slack-discord

此仓库包含发送 Layer 实现到 Slack 和 Discord 的 tracing 事件的代码。

tracing-layer-slack tracing-layer-slack on crates.io Docs

tracing-layer-discord tracing-layer-discord on crates.io Docs

概要

DiscordLayerSlackLayer 通过 tokioreqwest 向 Discord Webhook URL 和 Slack Webhook URL 发送 POST 请求,每个新的跟踪事件都会根据用户提供的过滤规则进行。嵌入消息的格式是静态定义的。

此层还查找父 span 的可选 JsonStorageLayer extension。此扩展可能包含父事件跨度的事件的附加上下文信息,这些信息被包含在 Discord 消息中。

功能

  • 将跟踪日志发送到 Slack 和 Discord 频道。
  • 可配置以满足您的需求。
  • 易于与现有的 Rust 应用程序集成。

用法

将以下内容添加到您的 Cargo.toml

[dependencies]
tracing-layer-slack = "0"
tracing-layer-discord = "0"

然后,在您的应用程序中

use regex::Regex;
use tracing::{info, instrument, warn};
use tracing_subscriber::{layer::SubscriberExt, Registry};

use tracing_layer_slack::{EventFilters, SlackLayer};
use tracing_layer_discord::{EventFilters, DiscordLayer};

#[instrument]
pub async fn network_io(id: u64) {
    warn!(user_id = id, "had to retry the request once");
}

#[tokio::main]
async fn main() {
    // Only show events from where this example code is the target.
    let target_to_filter: EventFilters = Regex::new("simple").unwrap().into();

    let app_name = "test-app".to_string();
    let (slack_layer, slack_worker) = SlackLayer::builder(app_name.clone(), target_to_filter.clone()).build();
    let (discord_layer, discord_worker) = DiscordLayer::builder(app_name, target_to_filter).build();
    let subscriber = Registry::default().with(slack_layer);
    tracing::subscriber::set_global_default(subscriber).unwrap();

    // Start the workers and spawn the background async tasks on the current executor.
    discord_worker.start();
    slack_worker.start();

    network_io(123).await;
    
    // Shutdown the workers and ensure their message cache is flushed.
    slack_worker.shutdown().await;
    discord_worker.shutdown().await;
}

许可证

本项目采用MIT许可证 - 详细信息请参阅LICENSE文件。

依赖项

约11–30MB
约488K SLoC