Ich habe die Feder mit Transaktionsunterstützung konfiguriert. Gibt es eine Möglichkeit, Transaktionen zu protokollieren, um sicherzustellen, dass ich alles richtig eingerichtet habe? Das Anzeigen im Protokoll ist eine gute Möglichkeit, um zu sehen, was passiert.
java
spring
transactional
Cometta
quelle
quelle
INFO
level zeigt überhaupt keine tx-Aktivität an, es wäre zu ausführlich.DEBUG
wird dort notwendig sein.Für mich war eine gute Protokollierungskonfiguration zum Hinzufügen:
Es wird mir folgendes Protokoll zeigen:
quelle
Für Spring Boot-Anwendung mit
application.properties
oder wenn Sie Yaml bevorzugen (
application.yaml
)quelle
Die interessantesten Protokollinformationen von
JtaTransactionManager.java
(wenn es sich bei dieser Frage noch um das handeltJtaTransactionManager
) werdenDEBUG
vorrangig protokolliert . Angenommen, Sie habenlog4j.properties
irgendwo auf dem Klassenpfad, würde ich daher empfehlen, Folgendes zu verwenden:quelle
Da Sie zur Laufzeit auf Spring-Klassen zugreifen können, können Sie den Transaktionsstatus bestimmen. Dieser Artikel kann Ihnen helfen:
https://dzone.com/articles/monitoring-declarative-transac
quelle
isActualTransactionActive()
anstatt ihn bei jedem Protokollierungsaufruf abzurufen.Sie können auch die JDBC-Protokollierung aktivieren:
quelle
Hier ist ein Code, den ich in meiner Logback-Layout-Implementierung verwende, die von ch.qos.logback.core.LayoutBase abgeleitet ist .
Ich erstelle eine threadlokale Variable, um den Verweis auf die Methode zu speichern
org.springframework.transaction.support.TransactionSynchronizationManager.isActualTransactionActive()
. Immer wenn eine neue Protokollzeile ausgedruckt wird,getSpringTransactionInfo()
wird sie aufgerufen und es wird eine einstellige Zeichenfolge zurückgegeben, die in das Protokoll aufgenommen wird.Verweise:
Code:
quelle