Maison > cadre php > Laravel > le corps du texte

Conseils de développement Laravel : Comment gérer les exceptions et les enregistrements de journaux

WBOY
Libérer: 2023-11-23 10:08:59
original
1570 Les gens l'ont consulté

Conseils de développement Laravel : Comment gérer les exceptions et les enregistrements de journaux

Dans le développement de Laravel, la gestion des exceptions et la journalisation sont des éléments très importants, qui peuvent nous aider à localiser rapidement les problèmes et à gérer les exceptions. Cet article explique comment gérer les exceptions et les enregistrements de journaux pour aider les développeurs à mieux développer Laravel.

  1. Gestion des exceptions

La gestion des exceptions signifie détecter l'erreur et la gérer en conséquence lorsqu'une erreur ou une situation inattendue se produit dans le programme. Laravel fournit une multitude de mécanismes de gestion des exceptions. Présentons les étapes spécifiques de la gestion des exceptions.

1.1 Types d'exceptions

Dans Laravel, il existe de nombreux types d'exceptions, chacun ayant sa propre signification et sa propre méthode de traitement. Voici quelques types d'exceptions courants :

  • Exception HTTP : des exceptions HTTP sont levées lorsque la route demandée n'existe pas ou qu'un code de réponse HTTP incorrect est renvoyé.
  • Exception modèle non trouvé : lors de l'utilisation du modèle Eloquent, une exception modèle non trouvé sera levée lorsqu'un enregistrement correspondant n'est pas trouvé lors de l'interrogation de la base de données.
  • Exception de validation : une exception de validation sera levée en cas d'échec de la validation du formulaire, qui contient des champs incorrects et des informations d'erreur.
  • Exception de base de données : lors de l'interrogation de la base de données à l'aide du générateur de requêtes de Laravel ou d'Eloquent, une exception de base de données sera levée si une erreur se produit.
  • Autres exceptions : en plus des exceptions ci-dessus, il existe de nombreux autres types d'exceptions dans Laravel, telles que les exceptions de service, les exceptions de file d'attente, etc.

1.2 Processus de gestion des exceptions

Lorsqu'une exception se produit, Laravel décidera comment la gérer en fonction du type d'exception. S'il s'agit d'une exception courante, le framework la gérera automatiquement, renvoyant généralement une page d'erreur rendue ou une réponse JSON. S'il s'agit d'une exception d'un autre type, le framework lèvera l'exception au gestionnaire d'exceptions et la gérera en fonction de la configuration du gestionnaire d'exceptions. Voici le processus général de gestion des exceptions :

1.2.1 Créer une classe d'exception

Dans Laravel, nous pouvons personnaliser les classes d'exception pour mieux gérer les situations d'exception. Les classes d'exception personnalisées doivent hériter de la classe Exception. Voici un exemple de classe d'exception personnalisée :

namespace AppExceptions;

use Exception;

class CustomException extends Exception
{
    public function __construct($message = "", $code = 0, Exception $previous = null)
    {
        parent::__construct($message, $code, $previous);
    }

    public function render($request)
    {
        return response()->view('errors.custom', [], 500);
    }
}
Copier après la connexion

Dans le code ci-dessus, nous avons créé une classe d'exception nommée CustomException et remplacé la méthode de rendu pour personnaliser la gestion des exceptions.

1.2.2 Enregistrer le gestionnaire d'exceptions

Dans Laravel, vous pouvez enregistrer des gestionnaires d'exceptions via AppServiceProvider ou ExceptionHandler. Les gestionnaires d'exceptions peuvent gérer tous les types d'exceptions dans le système. Voici un exemple d'enregistrement d'un gestionnaire d'exceptions :

namespace AppProviders;

use IlluminateSupportServiceProvider;
use IlluminateContractsDebugExceptionHandler as ExceptionHandlerContract;
use AppExceptionsCustomExceptionHandler;

class AppServiceProvider extends ServiceProvider
{
    public function boot()
    {
        //
    }

    public function register()
    {
        $this->app->bind(
            ExceptionHandlerContract::class,
            CustomExceptionHandler::class
        );
    }
}
Copier après la connexion

Dans le code ci-dessus, nous lions l'interface ExceptionHandleContract à la classe CustomExceptionHandler via la méthode bind pour utiliser un programme de gestion des exceptions personnalisé.

1.2.3 Gestion des exceptions

Dans le gestionnaire d'exceptions, nous pouvons le gérer différemment selon le type d'exception. Habituellement, nous devons enregistrer les exceptions pour le suivi et renvoyer les informations sur les exceptions à l'utilisateur. Voici un exemple de gestion d'une exception et de renvoi d'une réponse JSON :

namespace AppExceptions;

use Exception;
use IlluminateHttpJsonResponse;

class CustomExceptionHandler implements ExceptionHandlerContract
{
    public function report(Exception $exception)
    {
        // 记录异常到日志中
        Log::error($exception->getMessage());
    }

    public function render($request, Exception $exception)
    {
        // 返回JSON响应
        return new JsonResponse([
            'message' => '操作失败,请稍后再试。',
            'error' => $exception->getMessage(),
        ], 500);
    }
}
Copier après la connexion

Dans le code ci-dessus, nous utilisons la méthode report pour enregistrer l'exception dans le journal et la méthode render pour renvoyer la réponse JSON.

  1. Logging

Logging fait référence à l'enregistrement des informations générées pendant le fonctionnement du système pour une analyse et un traitement ultérieurs. Dans Laravel, vous pouvez utiliser la classe Log fournie par le framework pour implémenter la fonction de journalisation. Voyons comment effectuer la journalisation.

2.1 Pilote de journal

Laravel fournit une variété de pilotes de journal différents, tels qu'un pilote de fichier unique, un pilote de fichier quotidien, un pilote syslog, un pilote de base de données, etc. Nous pouvons configurer le pilote de journal utilisé dans le fichier config/logging.php Voici un exemple de fichier de configuration :

return [

    'default' => env('LOG_CHANNEL', 'stack'),

    'channels' => [
        'stack' => [
            'driver' => 'stack',
            'channels' => ['single'],
        ],

        'single' => [
            'driver' => 'single',
            'path' => storage_path('logs/laravel.log'),
            'level' => 'debug',
        ],
    ],

];
Copier après la connexion

Dans le code ci-dessus, nous utilisons un seul pilote de fichier pour enregistrer le journal dans storage/logs/laravel. connectez-vous au fichier.

2.2 Niveaux de journalisation

Les journaux de Laravel incluent plusieurs niveaux différents, tels que urgence, alerte, critique, erreur, avertissement, avis, information, débogage, etc. Nous pouvons configurer le niveau de journalisation dans le fichier config/logging.php, la valeur par défaut est le niveau de débogage. Voici un exemple de modification du niveau de journalisation :

return [

    'default' => env('LOG_CHANNEL', 'stack'),

    'channels' => [
        'stack' => [
            'driver' => 'stack',
            'channels' => ['single'],
        ],

        'single' => [
            'driver' => 'single',
            'path' => storage_path('logs/laravel.log'),
            'level' => env('APP_LOG_LEVEL', 'debug'),
        ],
    ],

];
Copier après la connexion

Dans le code ci-dessus, nous utilisons la fonction env pour obtenir la valeur de la variable d'environnement APP_LOG_LEVEL afin de définir le niveau de journalisation.

2.3 Logging

Dans Laravel, nous pouvons utiliser la classe Log pour enregistrer des journaux. Voici un exemple de journalisation :

use IlluminateSupportFacadesLog;

Log::info('This is an information log.');
Copier après la connexion

Dans le code ci-dessus, nous utilisons la méthode info pour enregistrer un journal au niveau des informations.

Conclusion

Cet article présente le contenu pertinent de la gestion des exceptions et de la journalisation dans le développement de Laravel. J'espère qu'il sera utile aux développeurs Laravel. Dans le processus de développement actuel, nous devons exploiter pleinement les puissantes fonctions fournies par Laravel pour améliorer l'efficacité du développement et garantir la fiabilité et la stabilité du système.

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal