fix: 解决访问没有埋点的问题

This commit is contained in:
2025-11-10 17:28:52 +08:00
parent e440631275
commit 57dea2ca87
38 changed files with 4172 additions and 1624 deletions

View File

@@ -1885,8 +1885,10 @@ function paramFilter($param)
* @param string $level 日志级别 debug、info、warning、error
* @param string $file 日志文件名(不含路径)
*/
function log_write(string $message, string $level = 'info', string $filename = '', int $maxFileSize = 5242880): void
function log_write(string $message, string $level = 'info', string $filename = ''): void
{
// 日志文件最大大小(字节)
$maxFileSize = 10485760; // 10MB
$callerInfo = CallerInfo::getCallerInfo(1);
// 格式化日志内容
@@ -1911,41 +1913,36 @@ function log_write(string $message, string $level = 'info', string $filename = '
$filename = date('Y-m-d') . '.log';
}
// 获取基础日志文件名(不含扩展名)和扩展名
$fileInfo = pathinfo($filename);
$baseName = $fileInfo['filename'];
$extension = isset($fileInfo['extension']) ? '.' . $fileInfo['extension'] : '.log';
// 日志文件路径
$logFile = $logPath . $filename;
// 检查文件大小并处理日志分割
if (file_exists($logFile) && filesize($logFile) >= $maxFileSize) {
// 查找现有的带序号的日志文件,确定下一个序号
$nextIndex = 1;
$pattern = $logPath . $baseName . '-???' . $extension;
$matchingFiles = glob($pattern);
if (!empty($matchingFiles)) {
// 提取最大序号
$maxIndex = 0;
foreach ($matchingFiles as $file) {
$fileBase = pathinfo($file, PATHINFO_FILENAME);
if (preg_match('/-([0-9]{3})$/', $fileBase, $matches)) {
$index = (int)$matches[1];
$maxIndex = max($maxIndex, $index);
// 检查文件大小,如果超过限制则直接重新写入(不创建新文件)
$flags = FILE_APPEND | LOCK_EX;
if (file_exists($logFile) && is_readable($logFile)) {
try {
// 方法1使用 filesize 函数(基本方法)
$fileSize = filesize($logFile);
// 如果 filesize 失败或返回 false尝试使用 stat 函数
if ($fileSize === false) {
$stat = stat($logFile);
if ($stat && isset($stat['size'])) {
$fileSize = $stat['size'];
}
}
$nextIndex = $maxIndex + 1;
// 如果获取到的文件大小超过限制,使用覆盖模式
if (isset($fileSize) && $fileSize >= $maxFileSize) {
$flags = 0 | LOCK_EX;
}
} catch (Exception $e) {
// 如果发生异常,为了安全起见,继续使用追加模式
// 可以根据需要记录异常信息
}
// 生成带序号的新文件名
$newFilename = $baseName . '-' . sprintf('%03d', $nextIndex) . $extension;
$logFile = $logPath . $newFilename;
}
// 写入文件(追加模式)
file_put_contents($logFile, $content, FILE_APPEND | LOCK_EX);
// 写入文件
file_put_contents($logFile, $content, $flags);
}