Refactor main.rs for clarity and modularity in rustfs-gui (#225)

* Improve init_logger function and format code with cargo fmt

- Enhance `init_logger` function for better logging configuration.
- Apply `cargo fmt` to format the codebase.

* Refactor main.rs for clarity and modularity in rustfs-gui

- Move `init_logger` function to `utils/logger.rs` for better separation of concerns.
- Create a dedicated `router` module in `router/router.rs`.
- Update `main.rs` to use the new `logger` and `router` modules.
- Apply `cargo fmt` to format the codebase.
This commit is contained in:
houseme
2025-02-18 18:37:17 +08:00
committed by GitHub
parent 279f8397f7
commit 391eb5b6f9
14 changed files with 141 additions and 115 deletions
+3 -65
View File
@@ -1,71 +1,9 @@
use components::Navbar;
use dioxus::logger::tracing::debug;
use dioxus::prelude::*;
use tracing_appender::rolling::{RollingFileAppender, Rotation};
use tracing_subscriber::{fmt, layer::SubscriberExt, util::SubscriberInitExt};
use views::{HomeViews, SettingViews};
mod components;
mod router;
mod utils;
mod views;
fn main() {
init_logger();
dioxus::launch(App);
}
#[derive(Debug, Clone, Routable, PartialEq)]
#[rustfmt::skip]
enum Route {
#[layout(Navbar)]
#[route("/")]
HomeViews {},
#[route("/settings")]
SettingViews {},
}
const FAVICON: Asset = asset!("/assets/favicon.ico");
const TAILWIND_CSS: Asset = asset!("/assets/tailwind.css");
#[component]
fn App() -> Element {
// Build cool things ✌️
use document::{Link, Title};
debug!("App rendered");
rsx! {
// Global app resources
Link { rel: "icon", href: FAVICON }
Link { rel: "stylesheet", href: TAILWIND_CSS }
// Script { src: "https://cdn.tailwindcss.com" }
Title { "RustFS" }
Router::<Route> {}
}
}
fn init_logger() {
// configuring rolling logs rolling by day
let home_dir = dirs::home_dir().expect("无法获取用户目录");
let rustfs_dir = home_dir.join("rustfs");
let logs_dir = rustfs_dir.join("logs");
let file_appender = RollingFileAppender::builder()
.rotation(Rotation::DAILY) // rotate log files once every hour
.filename_prefix("rustfs-cli") // log file names will be prefixed with `myapp.`
.filename_suffix("log") // log file names will be suffixed with `.log`
.build(logs_dir) // try to build an appender that stores log files in `/ var/ log`
.expect("initializing rolling file appender failed");
// non-blocking writer for improved performance
let (non_blocking_file, _guard) = tracing_appender::non_blocking(file_appender);
// console output layer
let console_layer = fmt::layer().with_writer(std::io::stdout).with_ansi(true); // enable colors in the console
// file output layer
let file_layer = fmt::layer().with_writer(non_blocking_file).with_ansi(false); // disable colors in the file
// Combine all tiers and initialize global subscribers
tracing_subscriber::registry()
.with(console_layer)
.with(file_layer)
.with(tracing_subscriber::EnvFilter::new("info")) // filter the log level by environment variables
.init();
let _worker_guard = utils::init_logger();
dioxus::launch(views::App);
}