fix(config): 修复Config类循环依赖

This commit is contained in:
zimoyin
2026-03-11 03:58:21 +08:00
parent 3471deb3f1
commit 5adf3930e2
3 changed files with 192 additions and 45 deletions
-36
View File
@@ -174,44 +174,8 @@ return [
}
$record['Level'] = str_pad(strtoupper($record['level_name']), 5);
$logFilter = Config::getInstance()->logFilter;
$matchWildcard = function (string $pattern, string $value): bool {
// 空规则特殊处理:如:debug 拆分后类规则为空,代表匹配所有类
if ($pattern === '') {
return true;
}
// 将通配符*转换为正则的.*,并转义其他特殊字符
$regexPattern = preg_quote($pattern, '/');
$regexPattern = str_replace('\*', '.*', $regexPattern);
// 正则全程匹配
return preg_match('/^' . $regexPattern . '$/', $value) === 1;
};
if (!empty($logFilter)) {
$className = $record['logger'] ?? '';
$methodName = $record['M'] ?? '';
// 遍历过滤规则,匹配则返回null(过滤日志)
foreach ($logFilter as $filter) {
// 拆分规则为类规则和方法规则(最多拆2部分,避免方法名含:)
[$filterClassRule, $filterMethodRule] = array_pad(explode(':', $filter, 2), 2, '*');
// 匹配类名规则(支持通配符*
$isClassMatch = $matchWildcard($filterClassRule, $className);
// 匹配方法名规则(支持通配符*
$isMethodMatch = $matchWildcard($filterMethodRule, $methodName);
// 类和方法都匹配时,过滤该日志
if ($isClassMatch && $isMethodMatch) {
return null;
}
}
}
return $record;
}
],
],
];