simplify logger_setup
This commit is contained in:
parent
fd858d2b4a
commit
5587b5cb8d
@ -15,14 +15,12 @@ use liana_ui::widget::{Column, Container, Element};
|
||||
pub mod pane;
|
||||
pub mod tab;
|
||||
|
||||
use crate::{dir::LianaDirectory, launcher, logger::Logger, VERSION};
|
||||
use crate::{dir::LianaDirectory, launcher, logger::setup_logger, VERSION};
|
||||
|
||||
pub struct GUI {
|
||||
panes: pane_grid::State<pane::Pane>,
|
||||
focus: Option<pane_grid::Pane>,
|
||||
config: Config,
|
||||
// We may change the directory of log outputs later
|
||||
_logger: Logger,
|
||||
}
|
||||
|
||||
#[derive(Debug)]
|
||||
@ -63,11 +61,10 @@ 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 log_level = log_level.unwrap_or(LevelFilter::INFO);
|
||||
if let Err(e) = setup_logger(log_level, config.liana_directory.clone()) {
|
||||
tracing::warn!("Error while setting error: {}", e);
|
||||
}
|
||||
let mut cmds = vec![Task::perform(ctrl_c(), |_| Message::CtrlC)];
|
||||
let (pane, cmd) = pane::Pane::new(&config);
|
||||
let (panes, focused_pane) = pane_grid::State::new(pane);
|
||||
@ -77,7 +74,6 @@ impl GUI {
|
||||
panes,
|
||||
focus: Some(focused_pane),
|
||||
config,
|
||||
_logger: logger,
|
||||
},
|
||||
Task::batch(cmds),
|
||||
)
|
||||
|
||||
@ -1,12 +1,5 @@
|
||||
use std::path::PathBuf;
|
||||
use std::{fs::File, sync::Arc};
|
||||
use tracing::error;
|
||||
use tracing_subscriber::{
|
||||
filter,
|
||||
fmt::{format, writer::BoxMakeWriter, Layer},
|
||||
prelude::*,
|
||||
reload, Registry,
|
||||
};
|
||||
use tracing_subscriber::{filter, fmt::writer::BoxMakeWriter, prelude::*, reload};
|
||||
|
||||
use crate::dir::LianaDirectory;
|
||||
|
||||
@ -30,70 +23,46 @@ impl From<reload::Error> for LoggerError {
|
||||
}
|
||||
}
|
||||
|
||||
pub struct Logger {
|
||||
file_handle: reload::Handle<
|
||||
Layer<Registry, format::DefaultFields, format::Format, BoxMakeWriter>,
|
||||
Registry,
|
||||
>,
|
||||
level_handle: reload::Handle<filter::LevelFilter, Registry>,
|
||||
}
|
||||
|
||||
impl Logger {
|
||||
pub fn setup(log_level: filter::LevelFilter) -> Logger {
|
||||
let (log_level, level_handle) = reload::Layer::new(log_level);
|
||||
let writer = BoxMakeWriter::new(std::io::stderr);
|
||||
let file_log = tracing_subscriber::fmt::layer()
|
||||
.with_writer(writer)
|
||||
.with_file(false);
|
||||
let (file_log, file_handle) = reload::Layer::new(file_log);
|
||||
let stdout_log = tracing_subscriber::fmt::layer().pretty().with_file(false);
|
||||
tracing_subscriber::registry()
|
||||
.with(
|
||||
stdout_log
|
||||
.and_then(file_log)
|
||||
.with_filter(log_level)
|
||||
// Add a filter to *both* layers that rejects spans and
|
||||
// events whose targets start with `<prefix>`.
|
||||
.with_filter(filter::filter_fn(|metadata| {
|
||||
!metadata.target().starts_with("iced_wgpu")
|
||||
&& !metadata.target().starts_with("iced_winit")
|
||||
&& !metadata.target().starts_with("wgpu_core")
|
||||
&& !metadata.target().starts_with("wgpu_hal")
|
||||
&& !metadata.target().starts_with("gfx_backend_vulkan")
|
||||
&& !metadata.target().starts_with("iced_glutin")
|
||||
&& !metadata.target().starts_with("iced_glow")
|
||||
&& !metadata.target().starts_with("glow_glyph")
|
||||
&& !metadata.target().starts_with("naga")
|
||||
&& !metadata.target().starts_with("winit")
|
||||
&& !metadata.target().starts_with("mio")
|
||||
&& !metadata.target().starts_with("ledger_transport_hid")
|
||||
&& !metadata.target().starts_with("cosmic_text")
|
||||
})),
|
||||
)
|
||||
.init();
|
||||
Self {
|
||||
file_handle,
|
||||
level_handle,
|
||||
}
|
||||
}
|
||||
|
||||
pub fn set_running_mode(&self, datadir: LianaDirectory, log_level: filter::LevelFilter) {
|
||||
let mut datadir = datadir.path().to_path_buf();
|
||||
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 set_layer(
|
||||
&self,
|
||||
destination_path: PathBuf,
|
||||
log_level: filter::LevelFilter,
|
||||
) -> Result<(), LoggerError> {
|
||||
let file = File::create(destination_path)?;
|
||||
self.file_handle
|
||||
.modify(|layer| *layer.writer_mut() = BoxMakeWriter::new(Arc::new(file)))?;
|
||||
self.level_handle.modify(|filter| *filter = log_level)?;
|
||||
Ok(())
|
||||
}
|
||||
pub fn setup_logger(
|
||||
log_level: filter::LevelFilter,
|
||||
datadir: LianaDirectory,
|
||||
) -> Result<(), Box<dyn std::error::Error>> {
|
||||
let mut log_path = datadir.path().to_path_buf();
|
||||
log_path.push(GUI_LOG_FILE_NAME);
|
||||
|
||||
let file = File::create(log_path)?;
|
||||
let writer = BoxMakeWriter::new(Arc::new(file));
|
||||
|
||||
let file_log = tracing_subscriber::fmt::layer()
|
||||
.with_writer(writer)
|
||||
.with_file(false);
|
||||
|
||||
let stdout_log = tracing_subscriber::fmt::layer().pretty().with_file(false);
|
||||
|
||||
tracing_subscriber::registry()
|
||||
.with(
|
||||
stdout_log
|
||||
.and_then(file_log)
|
||||
.with_filter(log_level)
|
||||
// Add a filter to *both* layers that rejects spans and
|
||||
// events whose targets start with specific prefixes.
|
||||
.with_filter(filter::filter_fn(|metadata| {
|
||||
!metadata.target().starts_with("iced_wgpu")
|
||||
&& !metadata.target().starts_with("iced_winit")
|
||||
&& !metadata.target().starts_with("wgpu_core")
|
||||
&& !metadata.target().starts_with("wgpu_hal")
|
||||
&& !metadata.target().starts_with("gfx_backend_vulkan")
|
||||
&& !metadata.target().starts_with("iced_glutin")
|
||||
&& !metadata.target().starts_with("iced_glow")
|
||||
&& !metadata.target().starts_with("glow_glyph")
|
||||
&& !metadata.target().starts_with("naga")
|
||||
&& !metadata.target().starts_with("winit")
|
||||
&& !metadata.target().starts_with("mio")
|
||||
&& !metadata.target().starts_with("ledger_transport_hid")
|
||||
&& !metadata.target().starts_with("cosmic_text")
|
||||
})),
|
||||
)
|
||||
.init();
|
||||
|
||||
Ok(())
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user