Maison >Java >javaDidacticiel >Comment puis-je enregistrer de manière centralisée les requêtes, les réponses et les exceptions de l'API REST Spring Boot ?

Comment puis-je enregistrer de manière centralisée les requêtes, les réponses et les exceptions de l'API REST Spring Boot ?

Barbara Streisand
Barbara Streisandoriginal
2024-11-23 13:48:16940parcourir

How Can I Centrally Log Spring Boot REST API Requests, Responses, and Exceptions?

Enregistrement centralisé des demandes et des réponses avec exceptions dans Spring Boot

Lors du développement d'API REST, il est crucial de capturer des journaux complets de toutes les demandes et réponses , y compris les paramètres d'entrée, les méthodes de classe et les exceptions. Cette journalisation centralisée permet un débogage et un audit rapides.

Approche des meilleures pratiques

Spring Boot offre une solution efficace et simple pour cette tâche : le module Actuator. Actuator fournit un point de terminaison (/trace ou /actuator/httptrace) qui enregistre les 100 dernières requêtes HTTP par défaut.

Personnalisation

Pour enregistrer chaque demande et personnaliser le point de terminaison à vos besoins spécifiques, vous pouvez :

  • Ajouter la dépendance spring-boot-starter-actuator à votre projet.
  • Mettez en liste blanche les points de terminaison souhaités (par exemple, /trace ou /api/**) pour vous assurer qu'ils sont connectés.
  • Facultativement, configurez les paramètres de sécurité pour protéger l'accès à ces points de terminaison.

Considérations supplémentaires

Autres fournisseurs d'hébergement, tels que Heroku fournit souvent la journalisation des demandes en tant que service, éliminant ainsi le besoin de code personnalisé.

Exemple

Pour configurer Actuator pour la journalisation des demandes et des réponses dans une application Spring Boot :

    dependencies {
        implementation 'org.springframework.boot:spring-boot-starter-actuator'
    }

    # Security configuration (optional)
    security {
        httpBasic {}
        headers {
            hsts {
                enabled = true
                maxAge = 31536000L  # 1 year
            }
        }
    }

Sortie

Le point de terminaison /trace produit un Réponse JSON similaire au format souhaité :

{
  "timestamp": 1656211869816,
  "message": "Successful request",
  "path": "/api/users/1",
  "method": "GET",
  "status": 200,
  "timeTaken": 1397
}

En cas d'exception :

{
  "timestamp": 1656211972854,
  "message": "UserNotFoundException: User with id 9999 not found",
  "path": "/api/users/9999",
  "method": "GET",
  "status": 404,
  "timeTaken": 2063,
  "exception": "UserNotFoundException",
  "error": "User with id 9999 not found"
}

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!

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