♻️ Use of cfg_if to manage how to logging according to the platform
This commit is contained in:
63
src/main.rs
63
src/main.rs
@@ -1,20 +1,27 @@
|
|||||||
#![allow(non_snake_case)]
|
#![allow(non_snake_case)]
|
||||||
|
|
||||||
|
#[macro_use]
|
||||||
|
extern crate cfg_if;
|
||||||
|
|
||||||
mod domain;
|
mod domain;
|
||||||
mod infrastructure;
|
mod infrastructure;
|
||||||
mod ui;
|
mod ui;
|
||||||
mod utils;
|
mod utils;
|
||||||
|
|
||||||
use dioxus::prelude::*;
|
use dioxus::prelude::*;
|
||||||
|
use tracing::{debug, error};
|
||||||
#[cfg(feature = "desktop")]
|
|
||||||
use dioxus::desktop::Config;
|
|
||||||
|
|
||||||
use tracing::debug;
|
|
||||||
use tracing_subscriber::prelude::*;
|
use tracing_subscriber::prelude::*;
|
||||||
|
|
||||||
#[cfg(feature = "web")]
|
cfg_if! {
|
||||||
|
if #[cfg(feature = "desktop")] {
|
||||||
|
use dioxus::desktop::Config;
|
||||||
|
use std::fs::File;
|
||||||
|
use time::format_description::well_known::Iso8601;
|
||||||
|
use tracing_subscriber::fmt::time::UtcTime;
|
||||||
|
} else if #[cfg(feature = "web")] {
|
||||||
use tracing_web::MakeWebConsoleWriter;
|
use tracing_web::MakeWebConsoleWriter;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
use crate::base::{login, sync_rooms};
|
use crate::base::{login, sync_rooms};
|
||||||
use crate::base::{APP_SETTINGS, ROOMS, SESSION};
|
use crate::base::{APP_SETTINGS, ROOMS, SESSION};
|
||||||
@@ -99,27 +106,41 @@ fn app() -> Element {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fn main() {
|
fn main() {
|
||||||
#[cfg(feature = "desktop")]
|
let mut builder = LaunchBuilder::new();
|
||||||
{
|
|
||||||
let fmt_layer = tracing_subscriber::fmt::layer()
|
|
||||||
.with_filter(tracing::level_filters::LevelFilter::DEBUG);
|
|
||||||
tracing_subscriber::registry().with(fmt_layer).init();
|
|
||||||
|
|
||||||
let config = Config::new().with_menu(None);
|
let mut layers = Vec::new();
|
||||||
let builder = LaunchBuilder::new().with_cfg(config);
|
|
||||||
builder.launch(app);
|
|
||||||
}
|
|
||||||
|
|
||||||
#[cfg(feature = "web")]
|
cfg_if! {
|
||||||
{
|
if #[cfg(feature = "desktop")] {
|
||||||
let fmt_layer = tracing_subscriber::fmt::layer()
|
let config = Config::new().with_menu(None);;
|
||||||
|
builder = builder.with_cfg(config);
|
||||||
|
|
||||||
|
let log_file = File::create("/tmp/bg92.log").unwrap();
|
||||||
|
let file_layer = tracing_subscriber::fmt::layer()
|
||||||
|
.with_writer(log_file)
|
||||||
|
.with_timer(UtcTime::new(Iso8601::DATE_TIME))
|
||||||
|
.with_ansi(false)
|
||||||
|
.with_filter(tracing::level_filters::LevelFilter::WARN)
|
||||||
|
.boxed();
|
||||||
|
layers.push(file_layer);
|
||||||
|
|
||||||
|
let console_layer = tracing_subscriber::fmt::layer()
|
||||||
|
// .with_filter(tracing::level_filters::LevelFilter::DEBUG);
|
||||||
|
.with_filter(tracing::level_filters::LevelFilter::WARN)
|
||||||
|
.boxed();
|
||||||
|
layers.push(console_layer);
|
||||||
|
|
||||||
|
} else if #[cfg(feature = "web")] {
|
||||||
|
let console_layer = tracing_subscriber::fmt::layer()
|
||||||
.with_ansi(false) // Only partially supported across browsers
|
.with_ansi(false) // Only partially supported across browsers
|
||||||
.without_time() // std::time is not available in browsers, see note below
|
.without_time() // std::time is not available in browsers, see note below
|
||||||
.with_writer(MakeWebConsoleWriter::new()) // write events to the console
|
.with_writer(MakeWebConsoleWriter::new()) // write events to the console
|
||||||
.with_filter(tracing::level_filters::LevelFilter::INFO);
|
.with_filter(tracing::level_filters::LevelFilter::INFO);
|
||||||
tracing_subscriber::registry().with(fmt_layer).init(); // Install these as subscribers to tracing events
|
layers.push(console_layer);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
tracing_subscriber::registry().with(layers).init();
|
||||||
|
|
||||||
let builder = LaunchBuilder::new();
|
|
||||||
builder.launch(app);
|
builder.launch(app);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
Reference in New Issue
Block a user