Pendant le processus de développement utilisant le framework Laravel, diverses erreurs ou exceptions se produiront inévitablement. Comment dépanner rapidement les erreurs et résoudre les problèmes est un défi auquel sont confrontés les développeurs de base. Cet article vous présentera les méthodes de dépannage des erreurs Laravel et vous aidera à obtenir deux fois le résultat avec la moitié de l'effort pendant le processus de développement.
1. Logging
Laravel enregistrera les informations du journal dans différents fichiers selon différents niveaux (débogage, information, avis, avertissement, erreur, critique, alerte, urgence). Nous pouvons rapidement trouver des erreurs dans le code en consultant les fichiers journaux.
1.1 Afficher les fichiers journaux
Ouvrez le répertoire storage/logs dans le répertoire racine du projet et vous pourrez voir le fichier laravel.log. Il s'agit du fichier journal total de tous les niveaux de journaux du système. le journal enregistre à un certain niveau, vous pouvez configurer dans le fichier config/logging.php ;
Dans le fichier journal, vous pouvez filtrer et afficher les informations d'erreur en fonction de l'heure, du processus, du niveau et d'autres conditions. L'utilisation spécifique est la suivante :
tail -f storage/logs/laravel.log // 监控最新的日志内容,按Ctrl+C停止 cat storage/logs/laravel.log | grep '关键字' // 搜索包含"关键字"的日志内容 tail -n 100 storage/logs/laravel.log | grep '关键字' // 查看最后100行日志是否包含"关键字"
1.2 Réglage du niveau
Grâce à la classe app/Exceptions/Handler.php du propre répertoire de Laravel, vous pouvez voir que le niveau de journalisation est défini dans le premier paramètre de la fonction report(), Laravel par défaut Le niveau de journalisation est une erreur, ce qui signifie que seuls les journaux avec un niveau d'erreur ou plus seront enregistrés dans le fichier journal app/public/storage/logs/laravel.log.
Si vous souhaitez écrire tous les journaux avec un niveau d'avertissement et supérieur dans le fichier journal, vous pouvez ajouter le niveau de départ dans le premier paramètre de la fonction report(), comme indiqué ci-dessous :
public function report(Exception $exception) { if ($this->shouldReport($exception)) { Log::channel('daily')->warning('遇到错误啦!', [ 'error' => $exception->getMessage() ]); } parent::report($exception); }
Grâce à Log::channel(' l'opération quotidienne ')->warning(), écrit les informations et le niveau d'erreur dans le journal et détermine s'ils doivent être écrits dans le journal via la méthode ShouldReport().
2. Gestion des exceptions
Dans les applications Laravel, la façon de lancer des exceptions personnalisées est très simple, il suffit de procéder comme suit :
2.1 Exceptions personnalisées
Créez une nouvelle classe d'exception et héritez de la classe d'exception par défaut de Laravel, comme indiqué ci-dessous. :
namespace AppExceptions; use Exception; class CustomException extends Exception { public function __construct($message = null, $code = 0) { parent::__construct($message, $code); // 调用父类的构造方法 } public function report() { // 记录错误日志 Log::error('CustomException:'.$this->getMessage()); } public function render($request) { return response()->json(['message' => $this->getMessage()], Response::HTTP_INTERNAL_SERVER_ERROR); } }
Dans la méthode de construction, nous pouvons définir les informations d'exception et le code d'état, enregistrer le journal des erreurs dans la méthode report() et renvoyer les informations d'exception et l'état au format JSON dans le code de la méthode render().
Lorsqu'une CustomException se produit dans l'application, Laravel exécutera automatiquement la méthode report() pour enregistrer les informations d'erreur dans le fichier journal et renverra les informations d'exception au front-end via la méthode render().
2.2 Déclencher une exception
Utilisez la méthode throw new CustomException () dans le code pour lever une exception, comme indiqué ci-dessous :
public function test(Request $request) { // ... if (! check_validate($request->all())) { throw new CustomException('请求参数不正确'); } }
3. Débogage d'erreur
Lors du développement ou des tests, vous devez parfois saisir le débogage dans le code informations pour faciliter la recherche du problème. Dans Laravel, nous pouvons rapidement afficher des informations de débogage et interrompre les résultats de l'exécution du programme via les fonctions dump() et dd().
3.1 dump() et dd()
La fonction dump() est utilisée pour imprimer le contenu de variables ou de tableaux sans interrompre l'exécution du programme. Similaire à la fonction var_dump() intégrée de PHP. La fonction
dd() imprimera non seulement le contenu de la variable ou du tableau, mais interrompra également l'exécution du programme et affichera la pile de code traitée à la position actuelle et les informations spécifiques de l'exception. Semblable aux fonctions die() ou exit() intégrées à PHP.
Route::get('/test', function () { dump('Hello Laravel!'); return response()->json(['key' => 'value']); }); Route::get('/test2', function () { $array = ['key_one' => 'value_one', 'key_two' => 'value_two']; dd($array); return response()->json(['key' => 'value']); });
Dans le code ci-dessus, nous utilisons les méthodes dump() et dd() pour imprimer le contenu des chaînes et des tableaux. L'utilisation est similaire aux fonctions natives PHP, ce qui est très pratique.
4. Conclusion
Pendant le processus de développement de Laravel, divers messages d'erreur apparaîtront toujours pour diverses raisons. Comment dépanner et résoudre efficacement ces erreurs est un problème auquel chaque développeur doit être confronté. Dans cet article, nous présentons plusieurs méthodes de dépannage courantes telles que la journalisation Laravel, la gestion des exceptions et le débogage des erreurs. Nous espérons que cela vous sera utile lors du développement dans Laravel.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!