broker logs errors to file

This commit is contained in:
Evan Feenstra
2022-10-21 12:23:18 -07:00
parent c492b9ce6f
commit f6c9c5d64f
6 changed files with 63 additions and 13 deletions

View File

@@ -13,7 +13,7 @@ use crate::util::read_broker_config;
use clap::{App, AppSettings, Arg};
use rocket::tokio::{
self,
sync::{mpsc, oneshot, broadcast},
sync::{broadcast, mpsc, oneshot},
};
use std::env;
use std::sync::Arc;
@@ -55,6 +55,7 @@ pub struct ChannelReply {
const CLIENT_ID: &str = "sphinx-1";
const BROKER_CONFIG_PATH: &str = "../broker.conf";
const DEFAULT_ERROR_LOG_PATH: &str = "/root/.lightning/broker_errors.log";
#[rocket::launch]
async fn rocket() -> _ {
@@ -96,15 +97,32 @@ async fn run_main(parent_fd: i32) -> rocket::Rocket<rocket::Build> {
let (tx, rx) = mpsc::channel(1000);
let (status_tx, mut status_rx) = mpsc::channel(1000);
let (error_tx, _) = broadcast::channel(1000);
let (error_tx, mut error_rx) = broadcast::channel(1000);
log::info!("=> start broker on network: {}", settings.network);
start_broker(rx, status_tx, error_tx.clone(),CLIENT_ID, settings).await;
start_broker(rx, status_tx, error_tx.clone(), CLIENT_ID, settings).await;
log::info!("=> wait for connected status");
// wait for connection = true
let status = status_rx.recv().await.expect("couldnt receive");
log::info!("=> connection status: {}", status);
// assert_eq!(status, true, "expected connected = true");
// collect errors
tokio::spawn(async move {
use std::io::Write;
let err_log_path = env::var("BROKER_ERROR_LOG_PATH").unwrap_or(DEFAULT_ERROR_LOG_PATH.to_string());
if let Ok(mut file) = std::fs::OpenOptions::new()
.create(true) // create if doesn't exist
.append(true)
.open(err_log_path)
{
while let Ok(err_msg) = error_rx.recv().await {
if let Err(e) = file.write_all(&err_msg) {
log::warn!("failed to write error to log {:?}", e);
}
}
}
});
if let Ok(btc_url) = env::var("BITCOIND_RPC_URL") {
let signer_port = MqttSignerPort::new(tx.clone());
let frontend = Frontend::new(