logd() : une fonction maison pour consigner des message de débogage seulement lors du développement

Lorsque vous ajoutez des informations de débogage dans le fichier laravel.log, il y a peu de risques que des utilisateurs malveillants mettent la main sur des informations sensibles et ce, même si ces informations continuent à être consignées une fois le site en ligne. C'est la structure des dossiers de Laravel qui offre cette protection : le fichier laravel.log n'est pas situé sous le dossier public (la racine du site Web) donc il n'est pas accessible par le Web.

▼Publicité

Pourtant, le fait d'enregistrer ces informations pour un site en ligne consomme du temps de traitement inutilement. De plus, ces informations créent de la pollution dans le fichier laravel.log, qui peut être utile pour détecter différentes problématiques même lorsque le liste est en ligne. Voilà pourquoi il est important de supprimer les appels à Log::debug() une fois que vous avez obtenu l'information pour vous aider à déboguer.

Mais puisqu'un oubli est si vite arrivé, il vaut mieux prendre des précautions pour qu'en cas d'oubli, les informations de débogage ne soient pas consignées. Voici deux techniques pour y arriver.

APP_LOG_LEVEL

Dans le fichier .env, situé à la racine de votre projet, la constante APP_LOG_LEVEL permet d'indiquer à partir de quel niveau de sévérité les informations doivent être consignées dans le fichier laravel.log.

Par défaut, cette constante est initialisée à la valeur debug. Il s'agit de la configuration à utiliser pour un site en développement.

Les différents niveaux de sévérité possibles sont, dans l'ordre :

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

Lorsque le site est mis en ligne, il est important d'augmenter le niveau à partir duquel les erreurs seront consignées. Si vous souhaitez que toutes les erreurs soient consignées, à l'exception bien sûr des informations de débogage, vous configurerez le niveau à info.

Ex :

Ficheir .env (PHP)

APP_LOG_LEVEL=info

Il est également possible de configurer cette constante à un niveau plus élevé, par exemple error, afin de diminuer le nombre de messages dans le fichier laravel.log.

Fonction maison

Une autre technique, complémentaire à la première, consiste à créer une fonction de débogage qui fera un appel à Log::debug() seulement si la directive de débogage (APP_DEBUG dans le fichier .env) est à true.

Ceci semble inutile puisque le fait de modifier la configuration APP_LOG_LEVEL aura le même effet. Pourtant, il reste un avantage intéressant : vous aurez moins de caractères à taper à chaque fois que vous désirez l'utiliser (logd() vs Log::debug()).

Voici le code de cette fonction :

Fichier app/fonctions/debogage.php (PHP)

/**

 * Fait un Log::debug seulement si en mode débogage.

 * Source : christianelagace.com

 *

 * @param  mixed $message

 * @param  array  $context

 * @return void

 */

function logd($message, array $context = [])

{

    if (Config::get('app.debug')) {

        \Log::debug($message, $context);

    }

}

Pour l'utiliser, il faudra avoir pris soin d'ajouter une référence au fichier de débogage (avec un include_once() pour un contrôleur ou à l'aide d'une configuration dans composer.json pour l'ensemble de l'application).

Contrôleur Laravel (PHP)

logd($produits);

Un autre exemple, cette fois avec deux paramètres. logd() s'utilise donc exactement de la même façon que Log::debug().

Contrôleur Laravel (PHP)

logd('Données : ', compact('produits', 'factures');

Pour plus d'information

« Errors & Logging - Log Severity Levels ». Laravel. https://laravel.com/docs/master/errors#log-severity-levels

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

2 + 4 =