Sprężynę skonfigurowałem ze wsparciem transakcyjnym. Czy istnieje sposób na rejestrowanie transakcji, aby upewnić się, że wszystko skonfigurowałem poprawnie? Wyświetlanie w dzienniku to dobry sposób, aby zobaczyć, co się dzieje.
java
spring
transactional
cometta
źródło
źródło
INFO
poziom w ogóle nie pokaże żadnej aktywności tx, byłoby to zbyt szczegółowe.DEBUG
będzie tam potrzebny.Dla mnie dobrą konfiguracją logowania do dodania była:
Pokaże mi taki dziennik:
źródło
Dla aplikacji Spring Boot z
application.properties
lub jeśli wolisz Yaml (
application.yaml
)źródło
Najciekawsze informacje dziennika
JtaTransactionManager.java
(jeśli to pytanie nadal dotyczyJtaTransactionManager
) są rejestrowane wDEBUG
pierwszej kolejności. Zakładając, że maszlog4j.properties
gdzieś na ścieżce klas, sugerowałbym użycie:źródło
Ponieważ możesz uzyskać dostęp do klas Spring w czasie wykonywania, możesz określić status transakcji. Ten artykuł może Ci pomóc:
https://dzone.com/articles/monitoring-declarative-transac
źródło
isActualTransactionActive()
zamiast pobierania go przy każdym wywołaniu logowania.Możesz również włączyć rejestrowanie JDBC:
źródło
Oto kod, którego używam w mojej implementacji Logback Layout, pochodzący z ch.qos.logback.core.LayoutBase .
Tworzę zmienną lokalną wątku do przechowywania odniesienia do metody
org.springframework.transaction.support.TransactionSynchronizationManager.isActualTransactionActive()
. Za każdym razem, gdy drukowany jest nowy wiersz dziennika,getSpringTransactionInfo()
jest wywoływany i zwraca jednoznakowy ciąg, który trafia do dziennika.Bibliografia:
Kod:
źródło