Los logs en Laravel almacenan la información correspondiente a todos los errores (Excepciones) y/o eventos inesperados dentro de una aplicación para tener un registro de estas incidencias y así poder depurar mucho más fácil nuestro código. Estos logs se almacenan en el archivo laravel.log dentro de la carpeta /storage/logs, lo siguiente es un ejemplo de cómo se registran las excepciones en dicho archivo.
#0 [internal function]: Illuminate\Foundation\Bootstrap\HandleExceptions->handleError(2, 'file_put_conten...', '/home/vagrant/C...', 81, Array) #1 /home/vagrant/Code/www.laravel.dev/vendor/laravel/framework/src/Illuminate/Filesystem/Filesystem.php(81): file_put_contents('/home/vagrant/C...', '{\n "provider...', 0) #2 /home/vagrant/Code/www.laravel.dev/vendor/laravel/framework/src/Illuminate/Foundation/ProviderRepository.php(188): Illuminate\Filesystem\Filesystem->put('/home/vagrant/C...', '{\n "provider...')
Sin embargo, podemos usar el facade Log para crear registros personalizados que no sean necesariamente errores o excepciones sino posiblemente registro de actividad de un usuario dentro del sistema.
Veamos un ejemplo
Ingresemos al archivo routes.php y vamos a crear una nueva ruta llamada test de la siguiente manera:
Route::get('test', function () { try { // La variable no existe return $test_var; } catch (\Exception $e) { // Almacenamos la información del error. \Log::debug('Test var fails' . $e->getMessage()); } });
En este caso obligamos a lanzar el error debido a que tratamos de devolver una variable que no ha sido definida y usamos el método debug() concatenando al final el mensaje que devuelve la clase Exception de Laravel.
\Log::debug('Test var fails ' . $e->getMessage());
Si ingresamos en el navegador a /test veremos una página en blanco, entonces ¿Cómo saber que ha ocurrido? Estamos usando el método debug() y concatenamos al final el mensaje que devuelve la clase Exception de Laravel. Ahora vamos a ingresar nuevamente al archivo laravel.log para ver el resultado de esta ejecución.
[2016-01-19 19:45:22] local.DEBUG: Test var fails Trying to get property of non-object
De esta forma sabremos cual ha sido el error exactamente. Esta vez hemos almacenado este registro como un DEBUG, esto nos permite «etiquetar» de algún modo toda esta actividad, pero adicional a esto tenemos disponibles los siguientes métodos.
Log::emergency(); Log::alert(); Log::critical(); Log::error(); Log::warning(); Log::notice(); Log::info(); Log::debug();
Anteriormente te mencionaba que no necesariamente tenemos que estar trabajando con excepciones para almacenar información en el log.
Route::get('test', function () { \Log::info('Info log test'); });
Ejecutando el código anterior (ingresando a la url /test) obtendremos el siguiente mensaje en el archivo laravel.log
[2016-01-19 19:52:33] local.INFO: Info log test
Esto es muy útil en diversos casos para registrar información de lo que pueda ocurrir en el sistema que estemos desarrollando.
Espero te haya gustado esta leccion, si tienes una duda puedes dejarla en la sección de comentarios o a través de nuestro canal de slack.
Material relacionado
Regístrate hoy en Styde y obtén acceso a todo nuestro contenido.
Lección anterior PHP Traits en Laravel 5.1 Lección siguiente Modo de mantenimiento en Laravel 5.1