Add this to your Cargo.toml
[dependencies]
tokio-fluent = "0.5.1"
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();
}
let client = Client::new_tcp(
"127.0.0.1:24224".parse().unwrap(),
&Config {..Default::default()}
)
.await
.unwrap();
Set the timeout value of std::time::Duration
to connect to the destination. The default is 3 seconds.
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.
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.
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).
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).