Lorsqu'une application Laravel est exécutée, le cadre d'application ajoute parfois des messages dans un fichier de log. Ce sera le cas, par exemple, si l'application plante. Laravel utilise pour cela la bibliothèque Monolog.
Le fichier dans lequel les informations sont consignées s'appelle laravel.log et il est présent dans le dossier storage\logs.
Il est important de vérifier régulièrement le contenu de ce fichier. Des informations de débogage importantes peuvent s'y trouver.
Vous pouvez ajouter vos propres informations de débogage dans le fichier laravel.log.
\Log::debug('url: ' . \Request::url());
Lorsque Laravel ajoute lui-même un message dans le fichier laravel.log, il ajoute une information supplémentaire : le niveau de sévérité.
Les niveaux possibles sont les suivants :
Vous pouvez vous aussi préciser le niveau de sévérité des informations que vous consignez. Il suffit de choisir la fonction qui correspond au niveau de sévérité souhaité :
Peu importe la fonction utilisée, vous devez lui passer en paramètre les informations à consigner. Il s'agit généralement d'une chaîne de caractères mais d'autres options s'offrent à vous.
Si vous désirez envoyer un tableau dans le fichier laravel.log, vous devrez d'abord le convertir en chaîne. Une méthode intéressante pour y parvenir est l'utilisation de la fonction PHP implode().
$produits = Produit::pluck('description')->toArray();
\Log::debug(implode('*', $produits));
Ceci écrira les informations suivantes dans le fichier laravel.log :
[AAAA-MM-JJ hh:mm:ss] local.DEBUG: Basilic*Sauge*Romarin
Si c'est un objet qui doit être consigné dans le fichier laravel.log, il est possible de l'utiliser directement en paramètre.
$produit = Produit::find(1);
\Log::debug($produit);
Ceci est possible puisque Laravel se charge automatiquement de sérialiser l'objet à l'aide de la fonction PHP json_encode(). Vous obtiendrez exactement le même résultat avec ceci :
$produit = Produit::find(1);
\Log::debug(json_encode($produit));
Ceci écrira les informations suivantes dans le fichier laravel.log :
[AAAA-MM-JJ hh:mm:ss] local.DEBUG: {"id":1,"code":"BASI","description":"Basilic","categorie_id":1}
Il est également possible de travailler avec un second paramètre qui devra être un tableau. La beauté dans cette approche est que les éléments du tableau pourront être de n'importe quel type, incluant des objets. Laravel se chargera de les afficher correctement.
$produits = Produit::all();
\Log::debug('Produits: ', [$produits]);
Ceci écrira les informations suivantes dans le fichier laravel.log :
[AAAA-MM-JJ hh:mm:ss] local.DEBUG: Produits: ["[object] (Illuminate\\Database\\Eloquent\\Collection: [{\"id\":1,\"code\":\"BASI\",\"description\":\"Basilic\",\"categorie_id\":1,\"created_at\":null,\"updated_at\":null}, {\"id\":2,\"code\":\"SAUG\",\"description\":\"Sauge\",\"categorie_id\":1,\"created_at\":null,\"updated_at\":null}, {\"id\":3,\"code\":\"ROMA\",\"description\":\"Romarin\",\"categorie_id\":1,\"created_at\":null,\"updated_at\":null}])"]
Puisqu'il est possible de passer un tableau comme deuxième paramètre aux méthodes de consignation, pourquoi ne pas tirer profit de la méthode PHP compact() pour consigner rapidement plusieurs informations ?
$produits = Produit::all();
$categories = Categorie::all();
\Log::debug('Données: ', compact('produits', 'categories'));
Ceci écrira les informations suivantes dans le fichier laravel.log :
[AAAA-MM-JJ hh:mm:ss] local.DEBUG: Données: {"produits":"[object] (Illuminate\\Database\\Eloquent\\Collection: [{\"id\":1,\"code\":\"BASI\",\"description\":\"Basilic\",\"categorie_id\":1,\"created_at\":null,\"updated_at\":null}, {\"id\":2,\"code\":\"SAUG\",\"description\":\"Sauge\",\"categorie_id\":1,\"created_at\":null,\"updated_at\":null}, {\"id\":3,\"code\":\"ROMA\",\"description\":\"Romarin\",\"categorie_id\":1,\"created_at\":null,\"updated_at\":null}])","categories":"[object] (Illuminate\\Database\\Eloquent\\Collection: [{\"id\":1,\"description\":\"Fines herbes\",\"created_at\":null,\"updated_at\":null}, {\"id\":2,\"description\":\"Annuelles\",\"created_at\":null,\"updated_at\":null}, {\"id\":3,\"description\":\"Vivaces\",\"created_at\":null,\"updated_at\":null}])"}
« Errors & Logging - Logging ». Laravel. https://laravel.com/docs/master/errors#logging
▼Publicité