J'ai configuré Spring avec un support transactionnel. Existe-t-il un moyen de consigner les transactions simplement pour m'assurer que j'ai tout configuré correctement? L'affichage dans le journal est un bon moyen de voir ce qui se passe.
java
spring
transactional
cometta
la source
la source
INFO
level ne montrera aucune activité tx du tout, ce serait trop détaillé.DEBUG
sera nécessaire là-bas.Pour moi, une bonne configuration de journalisation à ajouter était:
Cela me montrera un journal comme ça:
la source
Pour l'application Spring Boot avec
application.properties
ou si vous préférez Yaml (
application.yaml
)la source
Les informations de journal les plus intéressantes de
JtaTransactionManager.java
(si cette question concerne toujours leJtaTransactionManager
) sont enregistrées enDEBUG
priorité. En supposant que vous ayez unlog4j.properties
quelque part sur le classpath, je suggérerais donc d'utiliser:la source
Étant donné que vous pouvez accéder aux classes Spring au moment de l'exécution, vous pouvez déterminer l'état de la transaction. Cet article peut vous aider:
https://dzone.com/articles/monitoring-declarative-transac
la source
isActualTransactionActive()
lieu de la récupérer à chaque appel de journalisation.Vous pouvez également activer la journalisation JDBC:
la source
Voici un code que j'utilise dans mon implémentation Logback Layout dérivée de ch.qos.logback.core.LayoutBase .
Je crée une variable locale de thread pour stocker la référence à la méthode
org.springframework.transaction.support.TransactionSynchronizationManager.isActualTransactionActive()
. Chaque fois qu'une nouvelle ligne de journal est imprimée,getSpringTransactionInfo()
est appelée et renvoie une chaîne d'un caractère qui ira dans le journal.Références:
Code:
la source