Bonnes pratiques de logging Spring Boot pour applications BPM

 Le logging est essentiel dans les systèmes BPM car les workflows sont longs, asynchrones et distribués.

Dans une application web classique, on trace une requête.
Dans un système BPM, on trace une instance de processus.

Sans bon logging :

  • Impossible de suivre le workflow

  • Les incidents sont difficiles à analyser

  • Les external tasks échouent silencieusement

  • Les équipes métier ne comprennent pas les erreurs

Ce guide explique un logging prêt pour la production avec Camunda Platform.


📌 Pourquoi le logging BPM est différent

Une application BPM implique :

  • Moteur de workflow

  • Workers

  • Services externes

  • Tâches humaines

  • Messages

Une transaction métier peut durer heures ou jours.

Donc on log par process instance, pas par requête HTTP.


🖼️ Architecture de logging BPM


🧠 Principe clé : Correlation ID

Chaque instance doit avoir un identifiant.

Utiliser :
processInstanceKey ou businessKey

Exemple :

[ORDER-92812] Paiement autorisé [ORDER-92812] Facture générée [ORDER-92812] Email envoyé

🛠 Étape 1 : Filtre Correlation ID

@Component public class LoggingFilter extends OncePerRequestFilter { @Override protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain chain) throws ServletException, IOException { String correlationId = UUID.randomUUID().toString(); MDC.put("cid", correlationId); chain.doFilter(request, response); MDC.clear(); } }

🛠 Étape 2 : Pattern de logs

application.yml

logging: pattern: level: "%5p [${spring.application.name:},%X{cid}]"

🛠 Étape 3 : Propagation dans worker

String businessKey = externalTask.getBusinessKey(); MDC.put("cid", businessKey);

🖼️ Exemple de traçage


🔁 Stratégie des niveaux

NiveauUsage
INFOÉvénements métier
DEBUGDétails techniques
WARNProblèmes récupérables
ERRORIncidents

🛠 Étape 4 : Logging JSON structuré

Ajouter :

<artifactId>logstash-logback-encoder</artifactId>

logback-spring.xml

<encoder class="net.logstash.logback.encoder.LogstashEncoder"/>

Compatible ELK / Grafana.


🔐 Quoi logger

✔ démarrage processus
✔ tâches complétées
✔ retries
✔ incidents
✔ appels API

Ne pas logger :

❌ données sensibles
❌ mots de passe
❌ payload complet


⚠️ Erreurs fréquentes

❌ Pas de business key
❌ DEBUG en production
❌ Logs trop verbeux
❌ Pas de logs de retry


🏆 Bonnes pratiques

✔ Correlation ID
✔ Logs centralisés
✔ JSON logging
✔ Séparer logs métier et techniques
✔ Monitoring incidents


🎯 Exemple

[ORDER-1001] Processus démarré [ORDER-1001] Paiement demandé [ORDER-1001] Paiement validé [ORDER-1001] Expédition lancée [ORDER-1001] Processus terminé

Lisible par dev et métier.


🎯 Conclusion

Un bon logging transforme un BPM :

❌ Boîte noire → ✅ Système observable

Le diagnostic devient rapide et fiable.


💼 Support professionnel disponible

Si vous rencontrez des problèmes sur des projets réels liés au développement backend d’entreprise ou à l’automatisation des workflows, je propose des services de conseil payants, de débogage en production, de support projet et de formations ciblées.

Les technologies couvertes incluent Java, Spring Boot, PL/SQL, Azure, CMS, ainsi que l’automatisation des workflows (jBPM, Camunda BPM, RHPAM).

📧 Contact: ishikhanirankari@gmail.com | info@realtechnologiesindia.com

🌐 Website: IT Trainings | Digital lectern | Digital rostrum | Digital metal podium     


Comments

Popular posts from this blog

Scopes of Signal in jBPM

OOPs Concepts in Java | English | Object Oriented Programming Explained

jBPM Installation Guide: Step by Step Setup