mirror of
https://github.com/clash-verge-rev/clash-verge-rev.git
synced 2026-01-29 08:45:41 +08:00
refactor: enhance logging system with NoExternModule for better log filtering
This commit is contained in:
@@ -1,8 +1,7 @@
|
|||||||
cfg_if::cfg_if! {
|
cfg_if::cfg_if! {
|
||||||
if #[cfg(not(feature = "tauri-dev"))] {
|
if #[cfg(not(feature = "tauri-dev"))] {
|
||||||
use crate::utils::logging::{console_colored_format, file_format};
|
use crate::utils::logging::{console_colored_format, file_format, NoExternModule};
|
||||||
use flexi_logger::{Cleanup, Criterion, Duplicate, FileSpec, LogSpecification, Logger};
|
use flexi_logger::{Cleanup, Criterion, Duplicate, FileSpec, LogSpecification, Logger};
|
||||||
use log::LevelFilter;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -24,9 +23,6 @@ use tokio::fs::DirEntry;
|
|||||||
#[cfg(not(feature = "tauri-dev"))]
|
#[cfg(not(feature = "tauri-dev"))]
|
||||||
pub async fn init_logger() -> Result<()> {
|
pub async fn init_logger() -> Result<()> {
|
||||||
let log_level = Config::verge().await.latest_ref().get_log_level();
|
let log_level = Config::verge().await.latest_ref().get_log_level();
|
||||||
if log_level == LevelFilter::Off {
|
|
||||||
return Err(anyhow::anyhow!("logging is disabled"));
|
|
||||||
}
|
|
||||||
|
|
||||||
let log_dir = dirs::app_logs_dir()?;
|
let log_dir = dirs::app_logs_dir()?;
|
||||||
let logger = Logger::with(LogSpecification::from(log_level))
|
let logger = Logger::with(LogSpecification::from(log_level))
|
||||||
@@ -43,7 +39,8 @@ pub async fn init_logger() -> Result<()> {
|
|||||||
},
|
},
|
||||||
// TODO 提供前端设置最大保留文件数量
|
// TODO 提供前端设置最大保留文件数量
|
||||||
Cleanup::Never,
|
Cleanup::Never,
|
||||||
);
|
)
|
||||||
|
.filter(Box::new(NoExternModule));
|
||||||
|
|
||||||
let _handle = logger.start()?;
|
let _handle = logger.start()?;
|
||||||
|
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
use flexi_logger::filter::LogLineFilter;
|
||||||
|
|
||||||
cfg_if::cfg_if! {
|
cfg_if::cfg_if! {
|
||||||
if #[cfg(feature = "tauri-dev")] {
|
if #[cfg(feature = "tauri-dev")] {
|
||||||
use std::fmt;
|
use std::fmt;
|
||||||
@@ -171,6 +173,27 @@ macro_rules! logging_error {
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[cfg(not(feature = "tauri-dev"))]
|
||||||
|
static IGNORE_MODULES: &[&str] = &["tauri", "wry"];
|
||||||
|
#[cfg(not(feature = "tauri-dev"))]
|
||||||
|
pub struct NoExternModule;
|
||||||
|
#[cfg(not(feature = "tauri-dev"))]
|
||||||
|
impl LogLineFilter for NoExternModule {
|
||||||
|
fn write(
|
||||||
|
&self,
|
||||||
|
now: &mut DeferredNow,
|
||||||
|
record: &Record,
|
||||||
|
log_line_writer: &dyn flexi_logger::filter::LogLineWriter,
|
||||||
|
) -> std::io::Result<()> {
|
||||||
|
let module_path = record.module_path().unwrap_or_default();
|
||||||
|
if IGNORE_MODULES.iter().any(|m| module_path.starts_with(m)) {
|
||||||
|
Ok(())
|
||||||
|
} else {
|
||||||
|
log_line_writer.write(now, record)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#[cfg(not(feature = "tauri-dev"))]
|
#[cfg(not(feature = "tauri-dev"))]
|
||||||
pub fn get_log_level(log_level: &LevelFilter) -> String {
|
pub fn get_log_level(log_level: &LevelFilter) -> String {
|
||||||
#[cfg(feature = "verge-dev")]
|
#[cfg(feature = "verge-dev")]
|
||||||
|
|||||||
Reference in New Issue
Block a user