♻️ Use of cfg_if to manage how to logging according to the platform

This commit is contained in:
2024-05-18 22:01:58 +02:00
parent df2d924c65
commit b5da0ee992

View File

@@ -1,20 +1,27 @@
#![allow(non_snake_case)]
#[macro_use]
extern crate cfg_if;
mod domain;
mod infrastructure;
mod ui;
mod utils;
use dioxus::prelude::*;
#[cfg(feature = "desktop")]
use dioxus::desktop::Config;
use tracing::debug;
use tracing::{debug, error};
use tracing_subscriber::prelude::*;
#[cfg(feature = "web")]
use tracing_web::MakeWebConsoleWriter;
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 crate::base::{login, sync_rooms};
use crate::base::{APP_SETTINGS, ROOMS, SESSION};
@@ -99,27 +106,41 @@ fn app() -> Element {
}
fn main() {
#[cfg(feature = "desktop")]
{
let fmt_layer = tracing_subscriber::fmt::layer()
.with_filter(tracing::level_filters::LevelFilter::DEBUG);
tracing_subscriber::registry().with(fmt_layer).init();
let mut builder = LaunchBuilder::new();
let config = Config::new().with_menu(None);
let builder = LaunchBuilder::new().with_cfg(config);
builder.launch(app);
}
let mut layers = Vec::new();
#[cfg(feature = "web")]
{
let fmt_layer = tracing_subscriber::fmt::layer()
cfg_if! {
if #[cfg(feature = "desktop")] {
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
.without_time() // std::time is not available in browsers, see note below
.with_writer(MakeWebConsoleWriter::new()) // write events to the console
.with_filter(tracing::level_filters::LevelFilter::INFO);
tracing_subscriber::registry().with(fmt_layer).init(); // Install these as subscribers to tracing events
let builder = LaunchBuilder::new();
builder.launch(app);
layers.push(console_layer);
}
}
tracing_subscriber::registry().with(layers).init();
builder.launch(app);
}