Ejemplo n.º 1
0
 /**
  * Handle an incoming request.
  *
  * @param  \Illuminate\Http\Request  $request
  * @param  \Closure  $next
  * @return mixed
  */
 public function handle($request, Closure $next)
 {
     // ------------------------------------------------------------------------
     // Log Before call
     $begin_log_vars = ['method' => '', 'route' => '', 'uri' => '', 'parameters' => '', 'inputBodySize' => ''];
     // get the request details
     $method = $request->method();
     $begin_log_vars['method'] = $method;
     $route = $request->route();
     if ($route) {
         $route_uri = $route->getUri();
         $route_name = $route->getName();
         $route_params = $route->parameters();
     } else {
         $route_name = '[unknown]';
         $route_uri = '[unknown]';
         $route_params = [];
     }
     $begin_log_vars['route'] = $route_name;
     $begin_log_vars['uri'] = $route_uri;
     $begin_log_vars['parameters'] = $route_params;
     $body_size = $request->header('Content-Length');
     if (!$body_size) {
         $body_size = 0;
     }
     $begin_log_vars['inputBodySize'] = $body_size;
     EventLog::debug('apiCall.begin', $begin_log_vars);
     // ------------------------------------------------------------------------
     // Execute the next closure
     $status_code = null;
     $caught_exception = null;
     try {
         $response = $next($request);
         $status_code = $response->getStatusCode();
     } catch (Exception $e) {
         $caught_exception = $e;
         $status_code = 500;
         if ($e instanceof HttpException) {
             $status_code = $e->getStatusCode();
         }
     }
     // ------------------------------------------------------------------------
     // Log after call
     $end_log_vars = ['method' => $begin_log_vars['method'], 'route' => $begin_log_vars['route'], 'uri' => $begin_log_vars['uri'], 'parameters' => $begin_log_vars['parameters'], 'status' => $status_code];
     if ($caught_exception !== null) {
         // log the exception and then throw the error again
         EventLog::logError('apiCall.end', $caught_exception, $end_log_vars);
         throw $caught_exception;
     } else {
         if ($response->isServerError() or $response->isClientError()) {
             EventLog::warning('apiCall.end', $end_log_vars);
         } else {
             EventLog::debug('apiCall.end', $end_log_vars);
         }
     }
     return $response;
 }