date('Y-m-d H:i:s'), 'ip' => $request->getRealIp(), 'method' => $request->method(), 'path' => $request->path(), 'headers' => [ 'X-Request-Id' => strval($request->header('X-Request-Id', '')), 'X-Timestamp' => strval($request->header('X-Timestamp', '')), 'Content-Type' => strval($request->header('Content-Type', '')), ], 'raw' => $rawBody, ]; $logFile = $dir . DIRECTORY_SEPARATOR . 'daily_push_' . date('Y-m-d') . '.log'; file_put_contents( $logFile, json_encode($entry, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES) . PHP_EOL, FILE_APPEND | LOCK_EX ); self::cleanup($dir); } private static function cleanup(string $dir): void { $retentionDays = intval(config('playx.daily_push_raw_log_days', self::DEFAULT_RETENTION_DAYS)); if ($retentionDays <= 0) { return; } $expireBefore = time() - ($retentionDays * 86400); $files = glob($dir . DIRECTORY_SEPARATOR . 'daily_push_*.log'); if ($files === false) { return; } foreach ($files as $file) { if (is_file($file) && filemtime($file) < $expireBefore) { @unlink($file); } } } }