mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-07-22 13:45:40 +00:00
telemetry: wait for logger setup before making connection (#1048)
This commit is contained in:
@@ -55,14 +55,27 @@ const CHANNEL_SIZE: usize = 262144;
|
|||||||
|
|
||||||
/// Initialise telemetry.
|
/// Initialise telemetry.
|
||||||
pub fn init_telemetry(config: TelemetryConfig) -> slog_scope::GlobalLoggerGuard {
|
pub fn init_telemetry(config: TelemetryConfig) -> slog_scope::GlobalLoggerGuard {
|
||||||
|
let writer = TelemetryWriter::new();
|
||||||
|
let out_sync = writer.out.clone();
|
||||||
let log = slog::Logger::root(
|
let log = slog::Logger::root(
|
||||||
slog_async::Async::new(
|
slog_async::Async::new(
|
||||||
slog_json::Json::default(TelemetryWriter::new(config)).fuse()
|
slog_json::Json::default(writer).fuse()
|
||||||
).chan_size(CHANNEL_SIZE)
|
).chan_size(CHANNEL_SIZE)
|
||||||
.overflow_strategy(slog_async::OverflowStrategy::DropAndReport)
|
.overflow_strategy(slog_async::OverflowStrategy::DropAndReport)
|
||||||
.build().fuse(), o!()
|
.build().fuse(), o!()
|
||||||
);
|
);
|
||||||
slog_scope::set_global_logger(log)
|
let logger_guard = slog_scope::set_global_logger(log);
|
||||||
|
|
||||||
|
thread::spawn(move || {
|
||||||
|
loop {
|
||||||
|
trace!(target: "telemetry", "Connecting to Telemetry...");
|
||||||
|
let _ = ws::connect(config.url.as_str(), |out| Connection::new(out, &*out_sync, &config));
|
||||||
|
|
||||||
|
thread::sleep(time::Duration::from_millis(5000));
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
return logger_guard;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Exactly equivalent to `slog_scope::info`, provided as a convenience.
|
/// Exactly equivalent to `slog_scope::info`, provided as a convenience.
|
||||||
@@ -117,19 +130,8 @@ struct TelemetryWriter {
|
|||||||
}
|
}
|
||||||
|
|
||||||
impl TelemetryWriter {
|
impl TelemetryWriter {
|
||||||
fn new(config: TelemetryConfig) -> Self {
|
fn new() -> Self {
|
||||||
let out_sync = Arc::new(Mutex::new(None));
|
let out = Arc::new(Mutex::new(None));
|
||||||
let out = out_sync.clone();
|
|
||||||
|
|
||||||
thread::spawn(move || {
|
|
||||||
loop {
|
|
||||||
trace!(target: "telemetry", "Connecting to Telemetry...");
|
|
||||||
|
|
||||||
let _ = ws::connect(config.url.as_str(), |out| Connection::new(out, &*out_sync, &config));
|
|
||||||
|
|
||||||
thread::sleep(time::Duration::from_millis(5000));
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
TelemetryWriter {
|
TelemetryWriter {
|
||||||
buffer: Vec::new(),
|
buffer: Vec::new(),
|
||||||
|
|||||||
Reference in New Issue
Block a user