feat: enhance log filtering by adding support for debug level and updating log hierarchy #4293

This commit is contained in:
Tunglies
2025-08-06 20:49:54 +08:00
Unverified
parent 7b976c16eb
commit a9cfb2cfaa
4 changed files with 36 additions and 11 deletions

View File

@@ -234,6 +234,19 @@ impl LogsMonitor {
// Filter logs based on level if needed
let should_include = match filter_level {
"all" => true,
"debug" => true, // DEBUG level should include all log types
"info" => {
let log_type = log_data.log_type.to_lowercase();
matches!(log_type.as_str(), "info" | "warning" | "error")
}
"warning" => {
let log_type = log_data.log_type.to_lowercase();
matches!(log_type.as_str(), "warning" | "error")
}
"error" => {
let log_type = log_data.log_type.to_lowercase();
log_type == "error"
}
level => log_data.log_type.to_lowercase() == level.to_lowercase(),
};
@@ -282,10 +295,22 @@ impl LogsMonitor {
.iter()
.filter(|log| {
if let Some(ref filter_level) = level {
if filter_level == "all" {
true
} else {
log.log_type.to_lowercase() == filter_level.to_lowercase()
match filter_level.as_str() {
"all" => true,
"debug" => true, // DEBUG level should include all log types
"info" => {
let log_type = log.log_type.to_lowercase();
matches!(log_type.as_str(), "info" | "warning" | "error")
}
"warning" => {
let log_type = log.log_type.to_lowercase();
matches!(log_type.as_str(), "warning" | "error")
}
"error" => {
let log_type = log.log_type.to_lowercase();
log_type == "error"
}
level => log.log_type.to_lowercase() == level.to_lowercase(),
}
} else {
true

View File

@@ -29,6 +29,9 @@ const Item = styled(Box)(({ theme: { palette, typography } }) => ({
'& .type[data-type="info"], & .type[data-type="inf"]': {
color: palette.info.main,
},
'& .type[data-type="debug"], & .type[data-type="dbg"]': {
color: palette.text.secondary,
},
"& .data": {
color: palette.text.primary,
overflowWrap: "anywhere",

View File

@@ -30,7 +30,7 @@ const LOG_LEVEL_HIERARCHY = {
info: ["info", "warning", "error"],
warning: ["warning", "error"],
error: ["error"],
debug: ["debug"],
debug: ["info", "warning", "error", "debug"],
};
const LogPage = () => {

View File

@@ -185,10 +185,7 @@ export const clearGlobalLogs = () => {
export const useGlobalLogData = (logLevel: LogLevel = "all") => {
const logs = useGlobalLogStore((state) => state.logs);
// 根据当前选择的日志等级过滤日志
if (logLevel === "all") {
return logs;
} else {
return logs.filter((log) => log.type.toLowerCase() === logLevel);
}
// 日志已经在后端根据级别进行了过滤,这里直接返回所有日志
// 不需要在前端再次过滤避免重复过滤导致DEBUG日志丢失
return logs;
};