#aws #cloud-watch #跟踪 #发送

tracing-cloudwatch

将您的应用程序的跟踪事件(日志)发送到AWS CloudWatch Logs的tracing-subscriber层

6个版本

0.1.5 2024年2月5日
0.1.4 2023年10月19日
0.1.2 2023年7月24日
0.1.1 2023年5月7日

#160调试 分类中

Download history 235/week @ 2024-04-14 124/week @ 2024-04-21 7/week @ 2024-04-28 43/week @ 2024-05-05 5/week @ 2024-05-19 78/week @ 2024-05-26 32/week @ 2024-06-02 54/week @ 2024-06-09 126/week @ 2024-06-16 51/week @ 2024-06-23 24/week @ 2024-06-30 218/week @ 2024-07-07 234/week @ 2024-07-14 54/week @ 2024-07-21 202/week @ 2024-07-28

每月下载 711

MIT 协议

26KB
498 代码行

tracing-cloudwatch

tracing-cloudwatch是一个自定义的tracing-subscriber层,用于将您的应用程序的跟踪事件(日志)发送到AWS CloudWatch Logs。

我们支持rusotoAWS SDK作为AWS客户端。

使用方法

使用AWS SDK

需要awssdk功能

use tracing_subscriber::{layer::SubscriberExt, util::SubscriberInitExt};

#[tokio::main]
async fn main() {
    let config = aws_config::load_from_env().await;
    let cw_client = aws_sdk_cloudwatchlogs::Client::new(&config);

    tracing_subscriber::registry::Registry::default()
        .with(
            tracing_cloudwatch::layer().with_client(
                cw_client,
                tracing_cloudwatch::ExportConfig::default()
                    .with_batch_size(5)
                    .with_interval(std::time::Duration::from_secs(1))
                    .with_log_group_name("tracing-cloudwatch")
                    .with_log_stream_name("stream-1"),
            )
            .with_code_location(true)
            .with_target(false),
        )
        .init();
}

使用Rusoto

需要rusoto功能

use tracing_subscriber::{layer::SubscriberExt, util::SubscriberInitExt};

#[tokio::main]
async fn main() {
    let cw_client = rusoto_logs::CloudWatchLogsClient::new(rusoto_core::Region::ApNortheast1);

    tracing_subscriber::registry::Registry::default()
        .with(
            tracing_cloudwatch::layer().with_client(
                cw_client,
                tracing_cloudwatch::ExportConfig::default()
                    .with_batch_size(5)
                    .with_interval(std::time::Duration::from_secs(1))
                    .with_log_group_name("tracing-cloudwatch")
                    .with_log_stream_name("stream-1"),
            )
            .with_code_location(true)
            .with_target(false),
        )
        .init();
}

所需权限

目前需要以下AWS IAM权限

  • logs:PutLogEvents

CloudWatch Log Groups and Streams

此crate不会创建日志组和日志流,因此如果指定的日志组和日志流不存在,将引发错误。

重试和超时

在crate中未实现任何自定义重试逻辑或超时设置。我们假设这些配置通过SDK客户端处理。
例如,在AWS SDK中,您可以使用timeout_configretry_config设置这些配置。

许可证

此项目采用MIT许可证

依赖项

~4–20MB
~251K SLoC