#client #ingest #client-builder #client-send #api #parameters #log-dna

logdna-client

LogDNA Ingest API的包装器

46次发布

0.2.2 2019年10月1日
0.1.14 2020年1月16日
0.1.12 2019年11月11日
0.0.9 2019年7月24日

401模板引擎 中排名

Download history 225/week @ 2024-03-29 46/week @ 2024-04-05

每月115次 下载

MIT 许可证

32KB
680

用于与LogDNAIngest API通信的客户端库

此crate严重依赖HyperTokio进行操作。强烈建议阅读它们的相应文档以了解此crate的高级用法。

概述

总体流程相当简单,首先使用Client::builder创建一个新的客户端。

然后根据需要多次调用Client::send

示例

首先需要一个Tokio运行时

let mut rt = Runtime::new().expect("Runtime::new()");

客户端需要一个请求模板来生成新的请求

let params = Params::builder()
    .hostname("rust-client-test")
    .ip("127.0.0.1")
    .tags("this,is,a,test")
    .build()
    .expect("Params::builder()");

let template = RequestTemplate::builder()
    .host("logs.logdna.com")
    .params(params)
    .api_key("ingestion key goes here")
    .build()
    .expect("RequestTemplate::builder()");

现在您已经拥有了创建客户端所需的一切

let client = Client::new(request_template);

要使用客户端,我们需要调用Client::send

Client::send需要一个IngestBody,因此让我们创建一个

// Lets build a line, note that only line is required
let labels = Labels::new()
     .add("app", "test")
     .add("workload", "test");

let line1 = Line::builder()
     .line("this is a test")
     .app("rust-client")
     .level("INFO")
     .labels(labels)
     .build()
     .expect("Line::builder()");

let line2 = Line::builder()
     .line("this is also a test")
     .app("rust-client")
     .level("ERROR")
     .build()
     .expect("Line::builder()");

let body = IngestBody::new(vec![line1,line2]);

现在我们只需要使用上面创建的客户端发送体

let response = client.send(IngestBody::new(vec![line]));

响应需要在您之前创建的运行时上启动

如果响应未被轮询(在运行时上启动),则不会发生任何事情

assert_eq!(Response::Sent, rt.block_on(response).unwrap())

依赖关系

~12–24MB
~359K SLoC