12 releases

0.5.1 Dec 2, 2024
0.5.0 Nov 17, 2023
0.4.4 Nov 17, 2023
0.4.3 Aug 15, 2023
0.1.2 Jan 7, 2023

#1113 in Network programming

Download history 5/week @ 2024-09-23 1/week @ 2024-09-30 162/week @ 2024-12-02 9/week @ 2024-12-09

171 downloads per month

MIT license

30KB
643 lines

tokio-fluent

Crates.io Documentation CI

A fluentd client using tokio.

Installation

Add this to your Cargo.toml

[dependencies]
tokio-fluent = "0.5.1"

Example

use std::collections::HashMap;

use tokio_fluent::{Client, Config, FluentClient};
use tokio_fluent::record::{Map, Value};
use tokio_fluent::record_map;

#[tokio::main]
async fn main() {
    // Connect to server using TCP
    let client = Client::new_tcp(
        "127.0.0.1:24224".parse().unwrap(),
        &Config {..Default::default()}
    )
    .await
    .unwrap();
    // Or connecting using unix socket
    let client_unix = Client::new_unix(
        "/path/to/fluentd.sock",
        &Config {..Default::default()}
    )
    .await
    .unwrap();

    // With Map::new()
    let mut map = Map::new();
    map.insert("age".to_string(), 22.into());
    map.insert(
        "scores".to_string(),
        vec![80, 90]
            .into_iter()
            .map(|e| e.into())
            .collect::<Vec<_>>()
            .into(),
    );
    client.send("fluent.test", map).unwrap();

    // With record_map! macro
    let map_from_macro = record_map!(
        "age".to_string() => 22.into(),
        "scores".to_string() => [80, 90].into_iter().map(|e| e.into()).collect::<Vec<_>>().into(),
    );
    client.send("fluent.test", map_from_macro).unwrap();
}

Setting config values

let client = Client::new_tcp(
        "127.0.0.1:24224".parse().unwrap(),
        &Config {..Default::default()}
    )
    .await
    .unwrap();

timeout

Set the timeout value of std::time::Duration to connect to the destination. The default is 3 seconds.

retry_wait

Set the duration of the initial wait for the first retry, in milliseconds. The actual retry wait will be r * 1.5^(N-1) (r: this value, N: the number of retries). The default is 500.

max_retry

Sets the maximum number of retries. If the number of retries become larger than this value, the write/send operation will fail. The default is 10.

max_retry_wait

The maximum duration of wait between retries, in milliseconds. If calculated retry wait is larger than this value, operation will fail. The default is 60,000 (60 seconds).

max_connection_lifetime

The maximum lifetime of a connection before reconnection is attempted.

Note that reconnection is only triggered when new log lines are sent. If no new log lines are received within this timeframe, the connection will remain open, even if it's older than the value. The default is 0 (no reconnection).

Dependencies

~5–13MB
~154K SLoC