mirror of
https://github.com/Zedfrigg/ironbar.git
synced 2025-07-01 10:41:03 +02:00
refactor: move startup logging code to logging module
This commit is contained in:
parent
2c1b2924d4
commit
fd2d7e5c7a
2 changed files with 33 additions and 33 deletions
|
@ -1,7 +1,8 @@
|
||||||
use color_eyre::Result;
|
use color_eyre::Result;
|
||||||
use dirs::data_dir;
|
use dirs::data_dir;
|
||||||
use std::env;
|
use std::{env, panic};
|
||||||
use strip_ansi_escapes::Writer;
|
use strip_ansi_escapes::Writer;
|
||||||
|
use tracing::error;
|
||||||
use tracing_appender::non_blocking::{NonBlocking, WorkerGuard};
|
use tracing_appender::non_blocking::{NonBlocking, WorkerGuard};
|
||||||
use tracing_error::ErrorLayer;
|
use tracing_error::ErrorLayer;
|
||||||
use tracing_subscriber::fmt::{Layer, MakeWriter};
|
use tracing_subscriber::fmt::{Layer, MakeWriter};
|
||||||
|
@ -26,11 +27,34 @@ impl<'a> MakeWriter<'a> for MakeFileWriter {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn install_logging() -> Result<WorkerGuard> {
|
||||||
|
// Disable backtraces by default
|
||||||
|
if env::var("RUST_LIB_BACKTRACE").is_err() {
|
||||||
|
env::set_var("RUST_LIB_BACKTRACE", "0");
|
||||||
|
}
|
||||||
|
|
||||||
|
// keep guard in scope
|
||||||
|
// otherwise file logging drops
|
||||||
|
let guard = install_tracing()?;
|
||||||
|
|
||||||
|
let hook_builder = color_eyre::config::HookBuilder::default();
|
||||||
|
let (panic_hook, eyre_hook) = hook_builder.into_hooks();
|
||||||
|
|
||||||
|
eyre_hook.install()?;
|
||||||
|
|
||||||
|
// custom hook allows tracing_appender to capture panics
|
||||||
|
panic::set_hook(Box::new(move |panic_info| {
|
||||||
|
error!("{}", panic_hook.panic_report(panic_info));
|
||||||
|
}));
|
||||||
|
|
||||||
|
Ok(guard)
|
||||||
|
}
|
||||||
|
|
||||||
/// Installs tracing into the current application.
|
/// Installs tracing into the current application.
|
||||||
///
|
///
|
||||||
/// The returned `WorkerGuard` must remain in scope
|
/// The returned `WorkerGuard` must remain in scope
|
||||||
/// for the lifetime of the application for logging to file to work.
|
/// for the lifetime of the application for logging to file to work.
|
||||||
pub fn install_tracing() -> Result<WorkerGuard> {
|
fn install_tracing() -> Result<WorkerGuard> {
|
||||||
const DEFAULT_LOG: &str = "info";
|
const DEFAULT_LOG: &str = "info";
|
||||||
const DEFAULT_FILE_LOG: &str = "warn";
|
const DEFAULT_FILE_LOG: &str = "warn";
|
||||||
|
|
||||||
|
|
38
src/main.rs
38
src/main.rs
|
@ -19,46 +19,22 @@ use dirs::config_dir;
|
||||||
use gtk::gdk::Display;
|
use gtk::gdk::Display;
|
||||||
use gtk::prelude::*;
|
use gtk::prelude::*;
|
||||||
use gtk::Application;
|
use gtk::Application;
|
||||||
|
use std::env;
|
||||||
use std::future::Future;
|
use std::future::Future;
|
||||||
use std::path::PathBuf;
|
use std::path::PathBuf;
|
||||||
use std::process::exit;
|
use std::process::exit;
|
||||||
use std::{env, panic};
|
|
||||||
use tokio::runtime::Handle;
|
use tokio::runtime::Handle;
|
||||||
use tokio::task::block_in_place;
|
use tokio::task::block_in_place;
|
||||||
|
|
||||||
use crate::logging::install_tracing;
|
use crate::error::ExitCode;
|
||||||
use clients::wayland::{self, WaylandClient};
|
use clients::wayland::{self, WaylandClient};
|
||||||
use tracing::{debug, error, info};
|
use tracing::{debug, error, info};
|
||||||
|
|
||||||
const VERSION: &str = env!("CARGO_PKG_VERSION");
|
const VERSION: &str = env!("CARGO_PKG_VERSION");
|
||||||
|
|
||||||
#[repr(i32)]
|
|
||||||
enum ErrorCode {
|
|
||||||
GtkDisplay = 1,
|
|
||||||
CreateBars = 2,
|
|
||||||
Config = 3,
|
|
||||||
}
|
|
||||||
|
|
||||||
#[tokio::main]
|
#[tokio::main]
|
||||||
async fn main() -> Result<()> {
|
async fn main() -> Result<()> {
|
||||||
// Disable backtraces by default
|
let _guard = logging::install_logging();
|
||||||
if env::var("RUST_LIB_BACKTRACE").is_err() {
|
|
||||||
env::set_var("RUST_LIB_BACKTRACE", "0");
|
|
||||||
}
|
|
||||||
|
|
||||||
// keep guard in scope
|
|
||||||
// otherwise file logging drops
|
|
||||||
let _guard = install_tracing()?;
|
|
||||||
|
|
||||||
let hook_builder = color_eyre::config::HookBuilder::default();
|
|
||||||
let (panic_hook, eyre_hook) = hook_builder.into_hooks();
|
|
||||||
|
|
||||||
eyre_hook.install()?;
|
|
||||||
|
|
||||||
// custom hook allows tracing_appender to capture panics
|
|
||||||
panic::set_hook(Box::new(move |panic_info| {
|
|
||||||
error!("{}", panic_hook.panic_report(panic_info));
|
|
||||||
}));
|
|
||||||
|
|
||||||
info!("Ironbar version {}", VERSION);
|
info!("Ironbar version {}", VERSION);
|
||||||
info!("Starting application");
|
info!("Starting application");
|
||||||
|
@ -74,7 +50,7 @@ async fn main() -> Result<()> {
|
||||||
|| {
|
|| {
|
||||||
let report = Report::msg("Failed to get default GTK display");
|
let report = Report::msg("Failed to get default GTK display");
|
||||||
error!("{:?}", report);
|
error!("{:?}", report);
|
||||||
exit(ErrorCode::GtkDisplay as i32)
|
exit(ExitCode::GtkDisplay as i32)
|
||||||
},
|
},
|
||||||
|display| display,
|
|display| display,
|
||||||
);
|
);
|
||||||
|
@ -83,14 +59,14 @@ async fn main() -> Result<()> {
|
||||||
Ok(config) => config,
|
Ok(config) => config,
|
||||||
Err(err) => {
|
Err(err) => {
|
||||||
error!("{:?}", err);
|
error!("{:?}", err);
|
||||||
exit(ErrorCode::Config as i32)
|
exit(ExitCode::Config as i32)
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
debug!("Loaded config file");
|
debug!("Loaded config file");
|
||||||
|
|
||||||
if let Err(err) = create_bars(app, &display, wayland_client, &config) {
|
if let Err(err) = create_bars(app, &display, wayland_client, &config) {
|
||||||
error!("{:?}", err);
|
error!("{:?}", err);
|
||||||
exit(ErrorCode::CreateBars as i32);
|
exit(ExitCode::CreateBars as i32);
|
||||||
}
|
}
|
||||||
|
|
||||||
debug!("Created bars");
|
debug!("Created bars");
|
||||||
|
@ -101,7 +77,7 @@ async fn main() -> Result<()> {
|
||||||
|| {
|
|| {
|
||||||
let report = Report::msg("Failed to locate user config dir");
|
let report = Report::msg("Failed to locate user config dir");
|
||||||
error!("{:?}", report);
|
error!("{:?}", report);
|
||||||
exit(ErrorCode::CreateBars as i32);
|
exit(ExitCode::CreateBars as i32);
|
||||||
},
|
},
|
||||||
|dir| dir.join("ironbar").join("style.css"),
|
|dir| dir.join("ironbar").join("style.css"),
|
||||||
)
|
)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue