Un sistema de logs permite al desarrollador estar al tanto de lo que sucede con su aplicación.

Laravel, en su archivo config/logging especifica varios channels para un registro de logs. El channel que se quiera usar dependerá de la comodidad del programador y/o de los requerimientos especificados y será definido en el archivo de configuración .env.

El channel por defecto es el channel stack, el cual permite utilizar múltiples channels. El channel stack usa el channel single por defecto.

//.env
LOG_CHANNEL=stack
// config/logging.php
'stack' => [
    'driver' => 'stack',
    'channels' => ['single'],
    'ignore_exceptions' => false,
],

Si se quiere usar más de un channel, se debe especificar en el archivo config/logging. Los demás channels son single, daily, slack, papertrail, stderr, syslog, errorlog, null y emergency.

'stack' => [
    'driver' => 'stack',
    'channels' => ['single', 'daily', 'slack', 'emergency', 'stderr'],
    'ignore_exceptions' => false,
],
'channels' => ['single']
//Registra todos los logs en un el archivo storage/logs/laravel.log

'channels' => ['daily'] 
//Registra los logs en diferentes archivos, nombrándolos según fecha
//Los archivos de logs se encontrarán en la carpeta storage/logs  

'channels' => ['slack'] 
//Envía los logs a slack mediante un webhook  
//La url se define en el .env con la variable LOG_SLACK_WEBHOOK_URL=url

'channels' => ['null'] 
//Se descartan todos los logs. 

Niveles de logs:

Es recomendable usar los diferentes tipos de logs que Laravel provee según el nivel de importancia respectivo.

use Illuminate\Support\Facades\Log;

Log::emergency($message);
Log::alert($message);
Log::critical($message);
Log::error($message);
Log::warning($message);
Log::notice($message);
Log::info($message);
Log::debug($message);


Log::info('Envio de mails correcto');
Log::emergency('Sistema apagado');

En ocasiones se necesitará cambiar de channel según la necesidad y la importancia del log, se puede definir directamente en el log.

Log::channel('slack')->info('Log enviado a slack!');
Log::channel('daily')->warning('Cron diario ejecutado con errores');

Fuentes Bibliográficas:

1.
Logging - Laravel - The PHP Framework For Web Artisans [Internet]. [cited 2021 Jan 18]. Available from: https://laravel.com/docs/8.x/logging#configuration

Leave a comment