Yayları işlem desteği ile yapılandırdım. Her şeyi doğru bir şekilde kurduğumdan emin olmak için işlemleri günlüğe kaydetmenin bir yolu var mı? Günlüğü göstermek, neler olduğunu görmek için iyi bir yoldur.Kayıtta bir Yay işlemi gösteriliyor
cevap
, sen günlük düzeyini ayarlayabilirsiniz Bahar çerçeve böylece işlemler hakkında daha fazla bilgi verir. INFO
yeterli değilse Örneğin, JpaTransactionManager
kullanmanın durumda,
log4j.logger.org.springframework.orm.jpa=INFO
(bu işlem yöneticisinin paketidir) ve ayrıca
log4j.logger.org.springframework.transaction=INFO
set kullanmak DEBUG
Çalışma zamanında Bahar sınıflarına erişebildiğiniz için işlem durumunu belirleyebilirsiniz. Bu makale size yardımcı olabilir:
işlem yöneticisi bağlı olarak (docs kontrol alternatif kaydedici veya log4j xml biçimi) sizin log4j.properties
içinde
bozuk bağlantı .... – Gab
Çok bozuk, ama deneyin: [Bahar'ın @Transactional Açıklaması] hata ayıklama ipuçları (http://blog.timmattison.com/archives/2012/04/19/tips-for-debugging-springs -transaction-annotation /) (henüz kendim denemedim). İşlem durumunu almak için [TransactionSynchronizationManager] (https://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/transaction/support/TransactionSynchronizationManager.html) kullanır. Kod, her günlü aramada almak yerine, 'isActualTransactionActive()' işlevine yapılan başvuruyu önbelleğe almak için bir thread-local değişken kullanmalıdır. –
JtaTransactionManager.java
'in en ilginç günlük bilgileri (bu soru hala JtaTransactionManager
ile ilgili değilse) DEBUG
öncelikli olarak günlüğe kaydedilir. Eğer üzerinde sınıf bir log4j.properties
bir yere sahip varsayarsak, ben böylece kullanmayı öneririm:
log4j.logger.org.springframework.transaction=DEBUG
Sen de giriş JDBC olanak verebilir: Benim için
log4j.logger.org.springframework.jdbc=DEBUG
oldu eklemek iyi bir günlük config :
log4j.logger.org.springframework.transaction.interceptor = iz
Beni böyle log gösterecektir:
2012-08-22 18: 50: 00.031 İZ - yönteminden [com.MyClass.myMethod]
[kendi günlük ifadeleri için işlem alma com .MyClass.myMethod]
2012-08-22 18: 50: 00.142 TRACE - işlemin tamamlanması Yay önyükleme uygulama için [com.MyClass.myMethod]
Harika! Diğer paketlerin tüm bilgi/hata ayıklama/izleme günlüğüne sahip olmanıza gerek yok, aradığınız şey bu olduğunda: D – Johanneke
için:
logging.level.ROOT=INFO
logging.level.org.springframework.orm.jpa=DEBUG
logging.level.org.springframework.transaction=DEBUG
ch.qos.logback.core.LayoutBase'dan türetilen Logback Layout uygulamasında kullandığım bazı kodlar.
Referansı, org.springframework.transaction.support.TransactionSynchronizationManager.isActualTransactionActive()
yöntemine depolamak için iş parçacığı yerel bir değişken oluşturuyorum. Yeni bir günlük satırı yazdırıldığında, getSpringTransactionInfo()
çağrılır ve günlüğe girecek tek karakterli bir dize döndürür.
Referanslar:
- Tips for Debugging Spring's @Transactional Annotation
- org.springframework.transaction.support.TransactionSynchronizationManager
- java.lang.ThreadLocal
- java.lang.Class.getMethod()
Kodu:
private static ThreadLocal<Method> txCheckMethod;
private static String getSpringTransactionInfo() {
if (txCheckMethod == null) {
txCheckMethod = new ThreadLocal<Method>() {
@Override public Method initialValue() {
try {
ClassLoader contextClassLoader = Thread.currentThread().getContextClassLoader();
Class<?> tsmClass = contextClassLoader.loadClass("org.springframework.transaction.support.TransactionSynchronizationManager");
return tsmClass.getMethod("isActualTransactionActive", (Class<?>[])null);
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
};
}
assert txCheckMethod != null;
Method m = txCheckMethod.get();
String res;
if (m == null) {
res = " "; // there is no Spring here
}
else {
Boolean isActive = null;
try {
isActive = (Boolean) m.invoke((Object)null);
if (isActive) {
res = "T"; // transaction active
}
else {
res = "~"; // transaction inactive
}
}
catch (Exception exe) {
// suppress
res = "?";
}
}
return res;
}
- 1. Yay İşlemi Ek Açıklamaları - Başarı ile Çalıştırın
- 2. Yay zamanlayıcı yürütme işlemi nasıl iptal edilir
- 3. Etkin kayıtta Codeigniter get_where
- 4. Erişim numarası kime başka bir kayıtta saklanır
- 5. Yay ::
- 6. Rails User.joins.not (...) Aktif Kayıtta mı?
- 7. R Sonuç gösteriliyor sadece gösteriliyor
- 8. bir dize adresini gösteriliyor
- 9. Bir veritabanındaki her kayıtta yineleme - Ruby on Rails/ActiveRecord
- 10. Birden fazla Autofac yaşam boyu kapsamları bir kayıtta belirtilebilir mi?
- 11. codedui sınaması bir sınama eklendiğinde, kayıtta yinelenen kayıt hatası oluşuyor
- 12. pylab.imshow() ile bir görüntü gösteriliyor
- 13. Bir DateTime gösteriliyor + 1 yıl
- 14. Varsa bir işlemi durdurun
- 15. Bir işlemi nasıl kaydedebilirim?
- 16. Yay Güvenliği: Set GrantedAuthorities
- 17. Angularjsggörüntü gösteriliyor
- 18. Bir işlemi geri alma işlemi tamamlanır ve bir çok işlemi nasıl geri alırsınız
- 19. Yayılımı Destekleyen Yay İşlemleri
- 20. WxPython'da bir pencerede bir .png resmi gösteriliyor
- 21. Bir kapağın içinde bulunan bir yöntem gösteriliyor
- 22. yay bağlamında bir dizi tanımlamak
- 23. Yay 3.1 JSON tarih biçimi
- 24. Yay Batch
- 25. Yay denetleyiciden
- 26. Yay: @PostConstruct
- 27. Yay entegrasyonunu okuyan sorgu parametreleri
- 28. Tek bir işlemi nasıl birleştiririm?
- 29. Electron'da bir çocuk işlemi oluşturuldu
- 30. Excel Makro - Bir işlemi tekrarlayın
'INFO' seviyesi hiç bir tx etkinliğini göstermeyecek, çok fazla verim alacaktır. 'DEBUG' orada gerekli olacaktır. – skaffman
Spring3.x için çalışmaz – janwen
@Bozho Ben JpaTransactionManager ve ben bir havuz havuzdan ve belirli bir işlem için serbest bırakıldığında ne zaman izlemek istiyorum. – Ali