Example #1
0
 /**
  * @param LoggerFactory $factory
  * @param string              $appName
  * @param bool              $debug
  */
 public static function attachNewRelic(LoggerFactory $factory, $appName, $debug)
 {
     if (true === $debug || !extension_loaded('newrelic')) {
         return;
     }
     $newRelicHandler = new NewRelicHandler(\Monolog\Logger::ERROR, true, $appName, true);
     $factory->addHandler($newRelicHandler);
     $factory->getLogger('app')->pushHandler($newRelicHandler);
 }
Example #2
0
 /**
  * @param Request  $request
  * @param Response $response
  */
 public function terminate(Request $request, Response $response)
 {
     $logger = $this->loggerFactory->create('app.request');
     $routeName = $request->attributes->get('_route');
     $logger->notice(sprintf('Route %s matched', $routeName), array('route' => $routeName, 'response_code' => $response->getStatusCode(), 'response_size' => strlen($response->getContent())));
     $this->loggerFactory->flushBuffer();
     if ($this->app instanceof TerminableInterface) {
         $this->app->terminate($request, $response);
     }
 }
Example #3
0
 /**
  * @param Request $request
  * @param int     $type
  * @param bool    $catch
  *
  * @return Response|void
  */
 public function handle(Request $request, $type = self::MASTER_REQUEST, $catch = true)
 {
     if ($type === HttpKernelInterface::SUB_REQUEST) {
         if ($request->attributes->get('exception') instanceof \Exception) {
             $e = $request->attributes->get('exception');
             $this->newRelic->noticeError($e->getMessage(), $e);
         }
         return $this->app->handle($request, $type, $catch);
     }
     foreach ($this->loggerFactory->getTags() as $name => $value) {
         $this->newRelic->addCustomParameter($name, $value);
     }
     $this->newRelic->addCustomParameter('url', $request->getPathInfo());
     $this->newRelic->addCustomParameter('content_type', $request->getContentType());
     $routeName = $request->attributes->get('_route');
     if (null !== $routeName) {
         $routeName = explode('.', $routeName);
         $this->newRelic->nameTransaction($routeName[0]);
     }
     $response = $this->app->handle($request, $type, $catch);
     $this->newRelic->addCustomParameter('result_code', $response->getStatusCode());
     return $response;
 }
Example #4
0
 /**
  * @return ContainerInterface
  */
 public function startContainer()
 {
     if (true === $this->isStarted()) {
         return $this->container;
     }
     $configAsArray = iterator_to_array($this->config->getIterator());
     $this->internalConfig['parameters'] = $configAsArray;
     $this->container = $this->createContainer(new ArrayConfig($this->internalConfig));
     $loggerFactory = new LoggerFactory($this->config->get('debug'), $this->config->get('log_dir'));
     $this->container->bind('LoggerFactory', $loggerFactory);
     if (null !== $this->router) {
         // Keep compatibility, use the right type hint in the application as usual (UrlGeneratorInterface, UrlMatcherInterface)
         $this->container->bind('UrlMatcher', $this->router->getUrlMatcher());
         $this->container->bind('UrlGenerator', $this->router->getUrlGenerator());
         $this->container->bind('RouteCollection', $this->router->getRouteCollection());
     }
     $this->container->bind('AppLogger', $this->loggerFactory->getLogger('app'));
     $this->started = true;
     return $this->container;
 }