J'ai configuré Spring avec un support transactionnel. Existe-t-il un moyen de consigner les transactions simplement pour m'assurer de tout configurer correctement? Afficher dans le journal est un bon moyen de voir ce qui se passe.
Réponses
Trop de publicités?dans votre log4j.properties
(pour les autres bûcherons, ou log4j format xml, consultez la documentation)
En fonction de votre gestionnaire de transactions, vous pouvez définir le niveau de journalisation du framework spring pour qu'il vous donne plus d'infos sur les transactions. Par exemple, dans le cas de l'utilisation d' JpaTransactionManager
, vous définissez
log4j.logger.org.springframework.orm.jpa=INFO
(c'est le paquet de votre gestionnaire de transactions), et aussi
log4j.logger.org.springframework.transaction=INFO
Si INFO
n'est pas suffisant, utilisez DEBUG
Pour moi, une bonne configuration de journalisation à ajouter était:
log4j.logger.org.springframework.transaction.interceptor = trace
Il va me montrer le journal comme ça:
2012-08-22 18: 50: 00,031 TRACE - Obtention de transaction pour [com.MyClass.myMethod]
[Mes propres instructions de journal de la méthode com.MyClass.myMethod]
2012-08-22 18: 50: 00,142 TRACE - Finalisation de la transaction pour [com.MyClass.myMethod]
Les informations de journal les plus intéressantes de JtaTransactionManager.java
(si cette question concerne toujours les JtaTransactionManager
) sont enregistrées avec une priorité de DEBUG
. En supposant que vous ayez un log4j.properties
quelque part sur le classpath, je suggérerais donc d’utiliser:
log4j.logger.org.springframework.transaction=DEBUG
Comme vous pouvez accéder aux classes Spring au moment de l'exécution, vous pouvez déterminer le statut de la transaction ... Cela peut vous aider: http://java.dzone.com/articles/monitoring-declarative-transac?page=0,1