| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 |
- <?php
- namespace App\Http\Middleware;
- use App\Module\System\Services\RequestLogger;
- use Closure;
- use Illuminate\Http\Request;
- class AdminRequestLogMiddleware
- {
- /**
- * 处理后台请求日志记录
- *
- * @param \Illuminate\Http\Request $request
- * @param \Closure $next
- * @return mixed
- */
- public function handle(Request $request, Closure $next)
- {
- $startTime = microtime(true);
-
- // 创建请求日志
- $logger = new RequestLogger($request);
-
- // 设置路由信息
- $logger->setRouter($request->path());
-
- // 设置用户ID(如果已登录)
- if ($user = $request->user('admin')) {
- $logger->setUserId($user->id);
- }
-
- try {
- $response = $next($request);
-
- // 记录响应
- if (method_exists($response, 'getContent')) {
- $content = $response->getContent();
- if (is_string($content) && is_json($content)) {
- $logger->setJsonResponse($content);
- }
- }
-
- } catch (\Exception $e) {
- // 记录错误
- $logger->setError($e->getMessage());
- throw $e;
- } finally {
- // 记录运行时间
- $logger->setRunTime($startTime);
- }
-
- return $response;
- }
- }
- if (!function_exists('is_json')) {
- function is_json($string) {
- json_decode($string);
- return json_last_error() === JSON_ERROR_NONE;
- }
- }
|