symfony2 print logger log library dev symfony logging service controller monolog

symfony - print - ¿Debo registrar errores en un controlador o en un servicio?



symfony 4 logger (1)

Sería bueno si su lógica central está en sí misma en un servicio y no en su controlador .

De esta forma, podría usar el bloque try-catch dentro del servicio donde llama a otro servicio y su controlador se mantendrá limpio y ordenado; simplemente llame al servicio sin detectar ninguna excepción.

// AppBundle/src/Controller/MainController.php public function mainAction() { // ... $result = $this->get(''my_service'')->getResult($parameters); if (!$result) { // show an error message, pass it to another service, ignore it or whatever you like } } // AppBundle/src/Service/MyService.php public function getResult($parameters) { try { $apiResult = $this->apiService->get($parameters); } catch (ApiException $e) $this->logger->error(''My error message''); $apiResult = null; } return $apiResult; }

Considere también una Solución 3 : Lanzar una excepción en un servicio y atraparla en un detector de excepciones personalizado , donde puede iniciar sesión y tomar otras medidas (como reemplazar el objeto de Respuesta, etc.).

Tengo un controlador Symfony que básicamente verifica si los parámetros solicitados están en la solicitud, luego pasa estos parámetros a un servicio. El servicio usa Guzzle para llamar a una API, hace algunas cosas con el resultado y luego lo pasa de nuevo al controlador para mostrar un Json con la respuesta.

Tengo una pregunta de novato sobre el manejo de errores, si el Api que llamo con Guzzle devuelve un error, ¿cuál es la mejor solución?

Solución 1: ¿Debo registrar el error usando el servicio de registrador inyectado en mi propio servicio y devolver un error a mi controlador para poder mostrarlo?

Solución 2: si lanzo una excepción en el servicio, póngala en mi controlador y use $ this-> get ("Logger") en el controlador para registrar el error en los archivos de registro