Para saber la información que hemos mencionado no hay nada mejor que llevar un log de errores, con esto cada vez que ocurra una excepción podemos tener un archivo donde se registran y así poder saber dónde y cómo actuar para resolver el problema.
Opciones de log de errores
Tenemos varias opciones para hacer el log de errores, la más simple es crear un bloque try/catch y en la sección catch tomar el error y llevarlo a nuestro método que lo va a registrar, esto es muy útil cuando solo queremos estar al tanto de lo que sucede en pocas partes de la aplicación.
Veamos cómo funciona este enfoque mencionado:
Vemos entonces como en nuestro bloque try hemos introducido un lanzamiento de excepción para forzar a la aplicación a caer en el bloque catch y aquí en este último hemos colocado el método LogException que llevará al archivo Log el error capturado.
Una mejor solución
Como casi siempre hay una mejor opción que nos permite trabajar menos, para el caso del log de errores tenemos una solución más óptima y esta consiste en sobrescribir el método onException() de nuestro controlador, de esta forma podremos hacer el log de errores de manera general para el controlador y así se capturan todos los errores que provengan de sus acciones.
Veamos en la siguiente imagen como puede quedar nuestro método sobrescrito:
Si somos observadores notaremos que a pesar que el método luce casi igual al original hemos incorporado una línea donde aplicamos el método LogException() y le pasamos el contenido de la excepción o error que debe registrar; con esto nuestro controlador completo estará registrando todos los errores y excepciones que ocurran al momento de invocarlo en la aplicación.
Hemos visto cómo podemos incorporar el log de errores en nuestra aplicación en algunas formas, no debemos subestimar la importancia de esta herramienta ya que es una de las mejores formas de hacer debug, sobre todo en ambientes de producción donde no podemos permitirnos incorporar break points, entonces nuestra mejor opción es incorporar un log de errores el cual trabaja de forma silenciosa para darnos la información con la cual podremos mejorar el disfrute del usuario y mantener nuestra tranquilidad al mantener una aplicación funcional y segura.