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
+6 -18
View File
@@ -122,36 +122,24 @@ impl RustFSConfig {
if let Ok(stored_json) = entry.get_password() {
if let Ok(stored_config) = serde_json::from_str::<RustFSConfig>(&stored_json) {
// update fields that are not empty and non default
if !stored_config.address.is_empty()
&& stored_config.address != Self::DEFAULT_ADDRESS_VALUE
{
if !stored_config.address.is_empty() && stored_config.address != Self::DEFAULT_ADDRESS_VALUE {
config.address = stored_config.address;
let (host, port) = Self::extract_host_port(config.address.as_str())
.ok_or_else(|| {
format!("无法从地址 '{}' 中提取主机和端口", config.address)
})?;
.ok_or_else(|| format!("无法从地址 '{}' 中提取主机和端口", config.address))?;
config.host = host.to_string();
config.port = port.to_string();
}
if !stored_config.access_key.is_empty()
&& stored_config.access_key != Self::DEFAULT_ACCESS_KEY_VALUE
{
if !stored_config.access_key.is_empty() && stored_config.access_key != Self::DEFAULT_ACCESS_KEY_VALUE {
config.access_key = stored_config.access_key;
}
if !stored_config.secret_key.is_empty()
&& stored_config.secret_key != Self::DEFAULT_SECRET_KEY_VALUE
{
if !stored_config.secret_key.is_empty() && stored_config.secret_key != Self::DEFAULT_SECRET_KEY_VALUE {
config.secret_key = stored_config.secret_key;
}
if !stored_config.domain_name.is_empty()
&& stored_config.domain_name != Self::DEFAULT_DOMAIN_NAME_VALUE
{
if !stored_config.domain_name.is_empty() && stored_config.domain_name != Self::DEFAULT_DOMAIN_NAME_VALUE {
config.domain_name = stored_config.domain_name;
}
// The stored volume_name is updated only if it is not empty and different from the default
if !stored_config.volume_name.is_empty()
&& stored_config.volume_name != Self::default_volume_name()
{
if !stored_config.volume_name.is_empty() && stored_config.volume_name != Self::default_volume_name() {
config.volume_name = stored_config.volume_name;
}
if !stored_config.console_address.is_empty()
+48
View File
@@ -0,0 +1,48 @@
use dioxus::logger::tracing::debug;
use tracing_appender::non_blocking::WorkerGuard;
use tracing_appender::rolling::{RollingFileAppender, Rotation};
use tracing_subscriber::fmt;
use tracing_subscriber::layer::SubscriberExt;
use tracing_subscriber::util::SubscriberInitExt;
/// Initialize the logger with a rolling file appender
/// that rotates log files daily
pub fn init_logger() -> WorkerGuard {
// 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, worker_guard) = tracing_appender::non_blocking(file_appender);
// console output layer
let console_layer = fmt::layer()
.with_writer(std::io::stdout)
.with_ansi(true)
.with_line_number(true); // enable colors in the console
// file output layer
let file_layer = fmt::layer()
.with_writer(non_blocking_file)
.with_ansi(false)
.with_thread_names(true)
.with_target(true)
.with_thread_ids(true)
.with_level(true)
.with_line_number(true); // 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();
debug!("Logger initialized");
worker_guard
}
+2
View File
@@ -1,5 +1,7 @@
mod config;
mod helper;
mod logger;
pub use config::RustFSConfig;
pub use helper::ServiceManager;
pub use logger::init_logger;