Écrire dans le fichier laravel.log avec \Log::debug()

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.

▼Publicité

Il est important de vérifier régulièrement le contenu de ce fichier. Des informations de débogage importantes peuvent s'y trouver.

Consigner une information de débogage

Vous pouvez ajouter vos propres informations de débogage dans le fichier laravel.log.

Contrôleur Laravel (PHP)

\Log::debug('url: ' . \Request::url());

Niveau de sévérité des messages

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 :

  • debug
  • info
  • notice
  • warning
  • error
  • critical
  • alert
  • emergency

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é :

  • Log::debug()
  • Log::info()
  • Log::notice()
  • Log::warning()
  • Log::error()
  • Log::critical()
  • Log::alert()
  • Log::emergency()

Paramètres de ces fonctions

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.

Tableau

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().

Contrôleur Laravel (PHP)

$produits = Produit::pluck('description')->toArray();

\Log::debug(implode('*', $produits));

Ceci écrira les informations suivantes dans le fichier laravel.log :

Fichier storage\logs\laravel.log

[AAAA-MM-JJ hh:mm:ss] local.DEBUG: Basilic*Sauge*Romarin

Objet

Si c'est un objet qui doit être consigné dans le fichier laravel.log, il est possible de l'utiliser directement en paramètre.

Contrôleur Laravel (PHP)

$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 :

Contrôleur Laravel (PHP)

$produit = Produit::find(1);

\Log::debug(json_encode($produit));

Ceci écrira les informations suivantes dans le fichier laravel.log :

Fichier storage\logs\laravel.log

[AAAA-MM-JJ hh:mm:ss] local.DEBUG: {"id":1,"code":"BASI","description":"Basilic","categorie_id":1}

Consigner une information sans se soucier du type

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.

Contrôleur Laravel (PHP)

$produits = Produit::all();

\Log::debug('Produits: ', [$produits]);

Ceci écrira les informations suivantes dans le fichier laravel.log :

Fichier storage\logs\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}])"]

Consigner rapidement plusieurs informations

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 ?

Contrôleur Laravel (PHP)

$produits = Produit::all();

$categories = Categorie::all();

\Log::debug('Données: ', compact('produits', 'categories'));

Ceci écrira les informations suivantes dans le fichier laravel.log :

Fichier storage\logs\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}])"}

Pour plus d'information

« Errors & Logging - Logging ». Laravel. https://laravel.com/docs/master/errors#logging

Merci de partager ! Share on FacebookTweet about this on TwitterShare on Google+Share on LinkedInPin on PinterestShare on StumbleUponEmail this to someone
Catégories

Laisser un commentaire

6 + 2 =