feat: enhance log filtering by adding support for debug level and updating log hierarchy #4293
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -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 = () => {
|
||||
|
||||
@@ -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;
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user