Introduction au Composant de Journalisation mzt-biz-log
Le projet mzt-biz-log est une solution de journalisation d'opérations conçue pour les applications Spring Boot. Il permet d'enregistrer les activités métier de manière flexible grâce à l'utilisation d'annotations. Développé en Java, ce composant facilite l'intégration de mécanismes de journalisation personnalisables, supportant l'emploi de variables et la définition de fonctions spécifiques au sein des annotations.
Conseils et Solutions pour les Nouveaux Utilisateurs
1. Utilisation de l'annotation @LogRecord
Problématique courante : Les utilisateurs découvrant @LogRecord peuvent faire face à des situations où l'annotation ne semble pas s'activer ou fonctionner comme prévu.
Étapes de dépannage :
- Vérification de la compatibilité Spring Boot : Assurez-vous que la version de Spring Boot utilisée dans votre projet est compatible avec la bibliothèque
mzt-biz-log. Il est souvent préférable d'opter pour une version récente de Spring Boot pour une meilleure compatibilité. - Activation de la fonctionnalité de journalisation : L'activation de la journalisation s'effectue en ajoutant l'annotation
@EnableLogRecordà votre classe de démarrage Spring Boot. Il est également essentiel de définir la propriététenant. -
import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import com.mzt.logapi.starter.annotation.EnableLogRecord; @SpringBootApplication @EnableLogRecord(tenant = "fr.maentreprise.monapp") public class DemarrageApplication { public static void main(String[] args) { SpringApplication.run(DemarrageApplication.class, args); } } - Positionnement de l'annotation : Confirmez que l'annotation
@LogRecordest appliquée correctement sur la méthode dont vous souhaitez journaliser les opérations.
2. Implémentation de Fonctions Personnalisées
Problématique courante : Lors de la création de fonctions personnalisées pour la journalisation, il arrive que ces fonctions ne soient pas reconnues ou exécutées par le système.
Étapes de dépannage :
- Définition de la fonction personnalisée : Créez une classe qui implémente l'interface
ILogRecordServiceet définissez-y vos fonctions personnalisées. -
import org.springframework.stereotype.Component; import com.mzt.logapi.service.ILogRecordService; @Component public class GestionnaireFonctionsJournalisation implements ILogRecordService { @Override public String functionName() { return "maFonctionPerso"; } @Override public String function(Object parametre) { if (parametre != null) { return "Résultat personnalisé pour: " + parametre.toString(); } return "Aucun paramètre fourni"; } } - Utilisation de la fonction dans l'annotation : Intégrez votre fonctoin personnalisée directement dans l'annotation
@LogRecord. -
import com.mzt.logapi.starter.annotation.LogRecord; import org.springframework.stereotype.Service; @Service public class ServiceMetier { @LogRecord(success = "#{#maFonctionPerso(#arg0)}", fail = "Échec de l'opération avec #{#maFonctionPerso(#arg0)}") public String executerAction(String identifiant) { // Logique métier principale System.out.println("Exécution de l'action pour l'identifiant: " + identifiant); return "Action effectuée pour " + identifiant; } } - Gestion par Spring : Assurez-vous que votre classe de fonction personnalisée est gérée par le conteneur Spring en utilisant une annotation comme
@Component,@Serviceou@Repository.
3. Gestion des Exceptions lors de la Journalisation
Problématique courante : Une erreur survenant pendant le processus de journalisation peut potentiellement interrompre la logique métier principale de votre application.
Étapes de dépannage :
- Configuration de la gestion des échecs : L'attribut
failde l'annotation@LogRecordpermet de définir un message ou une action spécifique en cas d'échec de l'opération ou de la journalisation elle-même, garantissant que la logique métier n'est pas bloquée. -
import com.mzt.logapi.starter.annotation.LogRecord; import org.springframework.stereotype.Service; @Service public class TraitementCommande { @LogRecord(success = "Commande #{#arg0} traitée avec succès par #{#user.name}", fail = "Échec du traitement de la commande #{#arg0}: #{#_errorMsg}") public boolean traiterCommande(Long idCommande, String user) { try { // Simulation de la logique métier qui peut échouer if (idCommande % 2 != 0) { throw new IllegalArgumentException("Commande impaire non supportée."); } System.out.println("Traitement de la commande " + idCommande + " par " + user); return true; } catch (Exception e) { // Gestion spécifique des exceptions métier System.err.println("Erreur lors du traitement: " + e.getMessage()); throw e; // Relaisser l'exception après traitement pour que @LogRecord puisse capturer _errorMsg } } } - Capture et gestion des exceptions : Implémentez des blocs
try-catchdans votre logique métier pour intercepter et gérer les exceptions. Cela permet de séparer la gestion des erreurs métier de la journalisation. - Indépendnace de la journalisation : Le design de
mzt-biz-logest conçu pour que les erreurs de journalisation n'interfèrent pas avec le déroulement normal de la logique métier. Toutefois, une bonne gestion des exceptions dans la méthode annotée est toujours recommandée pour la robustesse de l'application.