Change log destination for a file in the liana directory
For simplicity in case of multiple wallets running, all the logs are stored in an unique file in the liana directory
This commit is contained in:
parent
cdc2b56a3b
commit
e771a42f45
@ -18,9 +18,10 @@ use crate::{dir::LianaDirectory, logger::Logger, VERSION};
|
||||
|
||||
pub struct GUI {
|
||||
state: tab::Tab,
|
||||
logger: Logger,
|
||||
// We may change the directory of log outputs later
|
||||
_logger: Logger,
|
||||
// if set up, it overrides the level filter of the logger.
|
||||
log_level: Option<LevelFilter>,
|
||||
_log_level: Option<LevelFilter>,
|
||||
}
|
||||
|
||||
#[derive(Debug)]
|
||||
@ -62,14 +63,18 @@ impl GUI {
|
||||
|
||||
pub fn new((config, log_level): (Config, Option<LevelFilter>)) -> (GUI, Task<Message>) {
|
||||
let logger = Logger::setup(log_level.unwrap_or(LevelFilter::INFO));
|
||||
logger.set_running_mode(
|
||||
config.liana_directory.clone(),
|
||||
log_level.unwrap_or_else(|| log_level.unwrap_or(LevelFilter::INFO)),
|
||||
);
|
||||
let mut cmds = vec![Task::perform(ctrl_c(), |_| Message::CtrlC)];
|
||||
let (state, cmd) = tab::Tab::new(config.liana_directory, config.network);
|
||||
cmds.push(cmd.map(Message::Tab));
|
||||
(
|
||||
Self {
|
||||
state,
|
||||
logger,
|
||||
log_level,
|
||||
_logger: logger,
|
||||
_log_level: log_level,
|
||||
},
|
||||
Task::batch(cmds),
|
||||
)
|
||||
@ -90,10 +95,7 @@ impl GUI {
|
||||
focus_next()
|
||||
}
|
||||
}
|
||||
Message::Tab(msg) => self
|
||||
.state
|
||||
.update(msg, &self.logger, self.log_level)
|
||||
.map(Message::Tab),
|
||||
Message::Tab(msg) => self.state.update(msg).map(Message::Tab),
|
||||
_ => Task::none(),
|
||||
}
|
||||
}
|
||||
|
||||
@ -2,7 +2,6 @@ use std::{collections::HashMap, sync::Arc};
|
||||
|
||||
use iced::{Subscription, Task};
|
||||
use tracing::{error, info};
|
||||
use tracing_subscriber::filter::LevelFilter;
|
||||
extern crate serde;
|
||||
extern crate serde_json;
|
||||
|
||||
@ -24,7 +23,6 @@ use crate::{
|
||||
installer::{self, Installer},
|
||||
launcher::{self, Launcher},
|
||||
loader::{self, Loader},
|
||||
logger::Logger,
|
||||
services::connect::{
|
||||
client::backend::{api, BackendWalletClient},
|
||||
login,
|
||||
@ -62,12 +60,7 @@ impl Tab {
|
||||
)
|
||||
}
|
||||
|
||||
pub fn update(
|
||||
&mut self,
|
||||
message: Message,
|
||||
logger: &Logger,
|
||||
log_level: Option<LevelFilter>,
|
||||
) -> Task<Message> {
|
||||
pub fn update(&mut self, message: Message) -> Task<Message> {
|
||||
match (&mut self.0, message) {
|
||||
(State::Launcher(l), Message::Launch(msg)) => match *msg {
|
||||
launcher::Message::Install(datadir, network, init) => {
|
||||
@ -83,21 +76,11 @@ impl Tab {
|
||||
);
|
||||
}
|
||||
}
|
||||
logger.set_installer_mode(
|
||||
datadir.clone(),
|
||||
log_level.unwrap_or(LevelFilter::INFO),
|
||||
);
|
||||
|
||||
let (install, command) = Installer::new(datadir, network, None, init);
|
||||
self.0 = State::Installer(Box::new(install));
|
||||
command.map(|msg| Message::Install(Box::new(msg)))
|
||||
}
|
||||
launcher::Message::Run(datadir_path, cfg, network, settings) => {
|
||||
logger.set_running_mode(
|
||||
datadir_path.clone(),
|
||||
network,
|
||||
log_level.unwrap_or_else(|| cfg.log_level().unwrap_or(LevelFilter::INFO)),
|
||||
);
|
||||
if settings.remote_backend_auth.is_some() {
|
||||
let (login, command) =
|
||||
login::LianaLiteLogin::new(datadir_path, network, settings);
|
||||
@ -136,12 +119,6 @@ impl Tab {
|
||||
.join(app::config::DEFAULT_FILE_NAME),
|
||||
)
|
||||
.expect("A gui configuration file must be present");
|
||||
logger.set_running_mode(
|
||||
l.datadir.clone(),
|
||||
l.network,
|
||||
config.log_level().unwrap_or(LevelFilter::INFO),
|
||||
);
|
||||
|
||||
let (app, command) = create_app_with_remote_backend(
|
||||
l.settings.clone(),
|
||||
backend_client,
|
||||
@ -158,7 +135,7 @@ impl Tab {
|
||||
_ => l.update(*msg).map(|msg| Message::Login(Box::new(msg))),
|
||||
},
|
||||
(State::Installer(i), Message::Install(msg)) => {
|
||||
if let installer::Message::Exit(settings, internal_bitcoind, remove_log) = *msg {
|
||||
if let installer::Message::Exit(settings, internal_bitcoind) = *msg {
|
||||
if settings.remote_backend_auth.is_some() {
|
||||
let (login, command) =
|
||||
login::LianaLiteLogin::new(i.datadir.clone(), i.network, *settings);
|
||||
@ -173,16 +150,6 @@ impl Tab {
|
||||
)
|
||||
.expect("A gui configuration file must be present");
|
||||
|
||||
logger.set_running_mode(
|
||||
i.datadir.clone(),
|
||||
i.network,
|
||||
log_level
|
||||
.unwrap_or_else(|| cfg.log_level().unwrap_or(LevelFilter::INFO)),
|
||||
);
|
||||
if remove_log {
|
||||
logger.remove_install_log_file(i.datadir.clone());
|
||||
}
|
||||
|
||||
let (loader, command) = Loader::new(
|
||||
i.datadir.clone(),
|
||||
cfg,
|
||||
|
||||
@ -31,11 +31,7 @@ use crate::{
|
||||
#[derive(Debug, Clone)]
|
||||
pub enum Message {
|
||||
UserActionDone(bool),
|
||||
Exit(
|
||||
Box<settings::WalletSettings>,
|
||||
Option<Bitcoind>,
|
||||
/* remove log */ bool,
|
||||
),
|
||||
Exit(Box<settings::WalletSettings>, Option<Bitcoind>),
|
||||
Clibpboard(String),
|
||||
Next,
|
||||
Skip,
|
||||
|
||||
@ -129,27 +129,23 @@ impl Step for Final {
|
||||
Message::AllKeysRedeemed => {
|
||||
self.generating = false;
|
||||
// If any errors occurred redeeming tokens, add a warning to the log.
|
||||
let mut has_error = false;
|
||||
for (pk, res) in &self.key_redemptions {
|
||||
if let Some(res) = res {
|
||||
if let Err(e) = res {
|
||||
warn!("Error redeeming key for token '{}': '{}'.", pk.token, e);
|
||||
has_error = true;
|
||||
}
|
||||
} else {
|
||||
// We expect to have all redemption results by now.
|
||||
warn!("Missing redemption info for token '{}'.", pk.token);
|
||||
has_error = true;
|
||||
}
|
||||
}
|
||||
// Now exit the installer whether or not any redemption errors occurred.
|
||||
let internal_bitcoind = self.internal_bitcoind.clone();
|
||||
let settings = self.wallet_settings.clone().expect("Install is done");
|
||||
// If there were any errors, don't remove the installer log.
|
||||
return Task::perform(
|
||||
async move { (settings, internal_bitcoind, has_error) },
|
||||
|(settings, internal_bitcoind, has_error)| {
|
||||
Message::Exit(Box::new(settings), internal_bitcoind, !has_error)
|
||||
async move { (settings, internal_bitcoind) },
|
||||
|(settings, internal_bitcoind)| {
|
||||
Message::Exit(Box::new(settings), internal_bitcoind)
|
||||
},
|
||||
);
|
||||
}
|
||||
|
||||
@ -1,4 +1,3 @@
|
||||
use liana::miniscript::bitcoin::Network;
|
||||
use std::path::PathBuf;
|
||||
use std::{fs::File, sync::Arc};
|
||||
use tracing::error;
|
||||
@ -11,7 +10,6 @@ use tracing_subscriber::{
|
||||
|
||||
use crate::dir::LianaDirectory;
|
||||
|
||||
const INSTALLER_LOG_FILE_NAME: &str = "installer.log";
|
||||
const GUI_LOG_FILE_NAME: &str = "liana-gui.log";
|
||||
|
||||
#[derive(Debug)]
|
||||
@ -79,40 +77,14 @@ impl Logger {
|
||||
}
|
||||
}
|
||||
|
||||
pub fn set_installer_mode(&self, datadir: LianaDirectory, log_level: filter::LevelFilter) {
|
||||
pub fn set_running_mode(&self, datadir: LianaDirectory, log_level: filter::LevelFilter) {
|
||||
let mut datadir = datadir.path().to_path_buf();
|
||||
datadir.push(INSTALLER_LOG_FILE_NAME);
|
||||
if let Err(e) = self.set_layer(datadir, log_level) {
|
||||
error!("Failed to change logger settings: {:#?}", e);
|
||||
}
|
||||
}
|
||||
|
||||
pub fn set_running_mode(
|
||||
&self,
|
||||
datadir: LianaDirectory,
|
||||
network: Network,
|
||||
log_level: filter::LevelFilter,
|
||||
) {
|
||||
let mut datadir = datadir.path().to_path_buf();
|
||||
datadir.push(network.to_string());
|
||||
datadir.push(GUI_LOG_FILE_NAME);
|
||||
if let Err(e) = self.set_layer(datadir, log_level) {
|
||||
error!("Failed to change logger settings: {:#?}", e);
|
||||
}
|
||||
}
|
||||
|
||||
pub fn remove_install_log_file(&self, datadir: LianaDirectory) {
|
||||
let mut datadir = datadir.path().to_path_buf();
|
||||
datadir.push(INSTALLER_LOG_FILE_NAME);
|
||||
if let Err(e) = std::fs::remove_file(&datadir) {
|
||||
error!(
|
||||
"Failed to remove installer log file {} error:{:#?}",
|
||||
datadir.to_string_lossy(),
|
||||
e
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
pub fn set_layer(
|
||||
&self,
|
||||
destination_path: PathBuf,
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user