fix: 解决访问没有埋点的问题
This commit is contained in:
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user