Foros del Web » Programando para Internet » PHP » Symfony »

handle errores, warnings

Estas en el tema de handle errores, warnings en el foro de Symfony en Foros del Web. Necesito handlear las excepciones, warnings, faltal error, etc. Para despues enviarlas por Post a otro sistema. Hice un Listener y pude agarrar las excepciones por ...
  #1 (permalink)  
Antiguo 06/02/2015, 10:57
 
Fecha de Ingreso: febrero-2011
Mensajes: 23
Antigüedad: 13 años, 2 meses
Puntos: 0
handle errores, warnings

Necesito handlear las excepciones, warnings, faltal error, etc. Para despues enviarlas por Post a otro sistema. Hice un Listener y pude agarrar las excepciones por Fatal error, pero el resto no las agarro. Alguna idea? No hay algo ya hecho en la web? (no encontre mucho) parece ser algo que se suele necesitar.
  #2 (permalink)  
Antiguo 06/02/2015, 11:32
Avatar de hhs
hhs
Colaborador
 
Fecha de Ingreso: junio-2013
Ubicación: México
Mensajes: 2.995
Antigüedad: 10 años, 9 meses
Puntos: 379
Respuesta: handle errores, warnings

Puede colocar el código que empleaste ?
__________________
Saludos
About me
Laraveles
A class should have only one reason to change.
  #3 (permalink)  
Antiguo 06/02/2015, 11:52
 
Fecha de Ingreso: febrero-2011
Mensajes: 23
Antigüedad: 13 años, 2 meses
Puntos: 0
Respuesta: handle errores, warnings

Basicamente use una clase que andaba circulando:

# src/Acme/DemoBundle/Resources/config/services.yml
parameters:
# ...

services:
# ...
kernel.listener.your_listener_name:
class: Acme\DemoBundle\EventListener\AcmeExceptionListene r
arguments: ["@logger"]
tags:
- { name: kernel.event_listener, event: kernel.exception, method: onKernelException }
- { name: kernel.event_listener, event: kernel.request, method: onKernelRequest }
- { name: monolog.logger, channel: tema }

Listener example:

// src/Acme/DemoBundle/EventListener/AcmeExceptionListener.php
namespace Acme\DemoBundle\EventListener;

use Symfony\Component\Debug\ExceptionHandler;
use Symfony\Component\HttpKernel\Event\GetResponseEven t;
use Symfony\Component\HttpKernel\Event\GetResponseForE xceptionEvent;
use Symfony\Component\HttpFoundation\Response;
use Psr\Log\LoggerInterface;

class ExceptionListener extends ExceptionHandler
{
private $logger;
private $prevExceptionHandler;

public function __construct(LoggerInterface $logger)
{
$this->logger = $logger;

// Set our handle method as fatal exception handler.
// It is required to extend Symfony\Component\Debug\ExceptionHandler
$this->prevExceptionHandler = set_exception_handler(array($this, 'handle'));
}

public function onKernelRequest(GetResponseEvent $event)
{
}

/**
* Handles non fatal exceptions (normal way).
*/
public function onKernelException(GetResponseForExceptionEvent $event)
{
// You get the exception object from the received event
$exception = $event->getException();

// Log exception.
$this->logger->error($exception->getMessage());

// ...
}

/**
* Overwrite ExceptionHandler method.
*/
public function handle(\Exception $exception) {
// Call our custom handler.
$this->onFatalErrorException($exception);

// Call exception handler that was overridden.
// Or try to call parent::handle($exception)
if (is_array($this->prevExceptionHandler) && $this->prevExceptionHandler[0] instanceof ExceptionHandler) {
$this->prevExceptionHandler[0]->handle($exception);
}
}

public function onFatalErrorException(\Exception $exception)
{
// Do anything you want...
$this->logger->error('Hey, I got it: '. $exception->getMessage());
}
}
  #4 (permalink)  
Antiguo 06/02/2015, 12:41
Avatar de hhs
hhs
Colaborador
 
Fecha de Ingreso: junio-2013
Ubicación: México
Mensajes: 2.995
Antigüedad: 10 años, 9 meses
Puntos: 379
Respuesta: handle errores, warnings

Primero que nada revisa la documentación para que veas como se implementa un listener para tu versión de symfony: http://symfony.com/doc/current/cookb..._listener.html
Posterior a eso es aconsejable que leas sobre el evento kernel exception: http://symfony.com/doc/current/compo...xception-event
por ultimo puedes basarte en el listener original: https://github.com/symfony/symfony/b...onListener.php
__________________
Saludos
About me
Laraveles
A class should have only one reason to change.

Etiquetas: errores
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 06:43.