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 在 调试
每月 61 次下载
用于 2 crates
32KB
433 代码行
tracing-layer-slack-discord
此仓库包含发送 Layer
实现到 Slack 和 Discord 的 tracing
事件的代码。
概要
DiscordLayer
和 SlackLayer
通过 tokio
和 reqwest
向 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