Comment ajouter des logs d’erreur spécifiques

Pour avoir des retours un peu plus pertinents sur les erreurs qui peuvent se produire dans notre application Laravel, on va ajouter des logs spécifiques pour gagner du temps et corriger rapidement.

Et encore une fois, le framework a tout pensé pour qu’on puisse utiliser les logs hyper facilement ! Et ce sans préciser une classe particulière dans la liste de "use", avec une syntaxe très réduite Log::info, Log::error etc… 🙂

try{
   //do something
}
catch(Exception $ex){
   Log::error($ex);
}

Avec cette simple syntaxe, vient la notion d’importance :

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

En message, j’ai tendance a mettre le maximum d’informations qui me seront pertinentes pour comprendre ce qu’il s’est passé en cas de souci. En l’occurrence, je mets au moins, le nom du contrôleur, la fonction et les paramètres qui ont été passés à la fonction en entrée!

Log::error('# MyController.myFunction() => param : ['.$param.'], exception : '.$ex);

Voici un exemple complet :

namespace App\Http\Controllers\Posts;

use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use App\Http\Controllers\Controller;
use App\Models\Post;

class PostsController extends Controller
{

   public function read($id){
      try{
         $post = Post::where('id', $id)->firstOrFail();
      }
      catch(Exception $ex){
         Log::error('# PostsController.read() => id : ['.$id.'], exception : '.$ex);
      }
      return view('posts.read', compact('post'));
  }

}

On retrouvera alors notre log dans le fichier des logs défini dans laravel, à savoir, par défaut dans "storage/logs/laravel.log" !

https://laravel.com/docs/5.6/logging