Ben JdbcTemplate ve NamedParameterJdbcTemplate harikaları hakkında öğreniyorum. Gördüğümü beğendim, ancak yürütmekte olan temel SQL'i görmenin kolay bir yolu var mı? Bunu hata ayıklama amacıyla görmek istiyorum (örneğin ortaya çıkan SQL'in harici bir araçta hata ayıklaması için).İlkbahar JdbcTemplate'deki temel SQL'i görmek?
cevap
Spring documentation onlar DEBUG düzeyinde günlüğe söylüyor: çıktı şuna benzer
bu sınıfın tarafından verilen tüm SQL kategorisi altında DEBUG seviyesinde kaydedilirşablon örneğinin tam olarak nitelenmiş sınıf adına karşılık gelen (genellikle JdbcTemplate, ancak JdbcTemplate sınıfının özel bir alt sınıfını kullanıyorsanız farklı olabilir). XML açısından
, şöyle logger şey yapılandırmanız gerekir:
<category name="org.springframework.jdbc.core.JdbcTemplate">
<priority value="debug" />
</category>
Bu konu ancak bir ay önce burada tartışıldı ve hazırda olduğu gibi işe gitmek için kolay değil gibi görünüyor ve/veya beklenen bilgileri vermedi: Spring JDBC is not logging SQL with log4j Bu konunun altında P6Spy kullanımını önerdi, bunlar da this article'a göre Yay'a entegre edilebilirler.
Gerçek SQL sorgularını da görmek için "org.springframework.jdbc" adı olarak kullanın. – Verhagen
Genelde, SQL sorgularınızda (parametreli veya değil) JdbcTemplate'e geçeceğinizden,% 100 emin değilim. Eğer PreparedStatement
s varsa ve yürütülmekte olan bir bilmiyorsanız, toString
yöntem iyi çalışması gerekir. Hazır konu açılmışken Ama, otomatik sorguları log izin yanı sıra bağlı parametreleri her zaman göreceksiniz güzel JDBC logger paketi here var. Çok kullanışlı.
executing PreparedStatement: 'insert into ECAL_USER_APPT
(appt_id, user_id, accepted, scheduler, id) values (?, ?, ?, ?, null)'
with bind parameters: {1=25, 2=49, 3=1, 4=1}
'PreparedStatement # toString()' ın SQL dizgisi döndürülmesi, JDBC API'sinde hiçbir yerde belirtilmemiş ve bu nedenle bir uygulama detayıdır. Çalışıp çalışmadığı JDBC sürücü yapısına ve/veya sürümüne bağımlısınız. – BalusC
Yorumunuzda http://rkbloom.net/logdriver/ adresine atıfta bulunulan link artık ölü gibi görünüyor. Bu kaydedici hakkında daha fazla bilgi verebilir misiniz - Ebeveyn sitesinde herhangi bir referans bulamıyorum. Teşekkürler – Bob
Bu org.springframework.jdbc-3.0.6.RELEASE.jar ile benim için çalışıyor. Ben Bahar dokümanlar bu her yerde (belki de sadece tembelim) bulamadık ama İZ seviyesi büyü yaptığını (deneme yanılma) bulundu.
ben slf4j (1.6.4) ile birlikte log4j-1.2.15 kullanıyorum ve özellikleri log4j yapılandırmak dosyasını: Bu böyle SQL deyimi ve sınır parametreleri hem görüntüler
log4j.logger.org.springframework.jdbc.core = TRACE
:
Executing prepared SQL statement [select HEADLINE_TEXT, NEWS_DATE_TIME from MY_TABLE where PRODUCT_KEY = ? and NEWS_DATE_TIME between ? and ? order by NEWS_DATE_TIME]
Setting SQL statement parameter value: column index 1, parameter value [aaa], value class [java.lang.String], SQL type unknown
Setting SQL statement parameter value: column index 2, parameter value [Thu Oct 11 08:00:00 CEST 2012], value class [java.util.Date], SQL type unknown
Setting SQL statement parameter value: column index 3, parameter value [Thu Oct 11 08:00:10 CEST 2012], value class [java.util.Date], SQL type unknown
bilinmeyen bir SQL türü hakkında emin ama (sen bağlı parametre değerlerinin ilgilenen değilseniz yani) sadece bir SQL için buraya
bunu görmezden sanırım değilyeterli olmalı.Parametre değerleri İZ düzeyde basılmış gibi görünüyor.Bu benim için çalıştı:
log4j.logger.org.springframework.jdbc.core.JdbcTem plate=DEBUG, file
log4j.logger.org.springframework.jdbc.core.StatementCreatorUtils=TRACE, file
Konsol çıktı:
02:40:56,519 TRACE http-bio-8080-exec-13 core.StatementCreatorUtils:206 - Setting SQL statement parameter value: column index 1, parameter value [Tue May 31 14:00:00 CEST 2005], value class [java.util.Date], SQL type unknown
02:40:56,528 TRACE http-bio-8080-exec-13 core.StatementCreatorUtils:206 - Setting SQL statement parameter value: column index 2, parameter value [61], value class [java.lang.Integer], SQL type unknown
02:40:56,528 TRACE http-bio-8080-exec-13 core.StatementCreatorUtils:206 - Setting SQL statement parameter value: column index 3, parameter value [80], value class [java.lang.Integer], SQL type unknown
jdbcTemplate ve logback ile çalışmaz – Emilio
Bu log4j2 ve xml parametreleri ile benim için çalıştı:
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="debug">
<Properties>
<Property name="log-path">/some_path/logs/</Property>
<Property name="app-id">my_app</Property>
</Properties>
<Appenders>
<RollingFile name="file-log" fileName="${log-path}/${app-id}.log"
filePattern="${log-path}/${app-id}-%d{yyyy-MM-dd}.log">
<PatternLayout>
<pattern>[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%n
</pattern>
</PatternLayout>
<Policies>
<TimeBasedTriggeringPolicy interval="1"
modulate="true" />
</Policies>
</RollingFile>
<Console name="console" target="SYSTEM_OUT">
<PatternLayout
pattern="[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%n" />
</Console>
</Appenders>
<Loggers>
<Logger name="org.springframework.jdbc.core" level="trace" additivity="false">
<appender-ref ref="file-log" />
<appender-ref ref="console" />
</Logger>
<Root level="info" additivity="false">
<appender-ref ref="file-log" />
<appender-ref ref="console" />
</Root>
</Loggers>
</Configuration>
Sonucu konsol ve dosya günlüğü oldu:
JdbcTemplate - Executing prepared SQL query
JdbcTemplate - Executing prepared SQL statement [select a, b from c where id = ? ]
StatementCreatorUtils - Setting SQL statement parameter value: column index 1, parameter value [my_id], value class [java.lang.String], SQL type unknown
Sadece kopyala/geç
HTH
- 1. İlkbahar
- 2. İlkbahar
- 3. İlkbahar İlkbahar uygulamasını progresif olarak yeniden başlatın
- 4. İlkbahar/RestTemplate -
- 5. İlkbahar - JSP
- 6. İlkbahar MVC
- 7. değil İlkbahar
- 8. İlkbahar 3'ten İlkbahar 4'e geçiş - org.springframework.scheduling.quartz.CronTriggerBean
- 9. İlkbahar önyükleme, ilkbahar BOM ve bahar IO arasında hangisini kullanmalıyım?
- 10. SpringMVC: İlkbahar-mvc uygulamasında
- 11. PathMatchingResourcePatternResolver (ilkbahar) Kullanım
- 12. org.hibernate.LazyInitializationException (İlkbahar/Hazırda Bekletme)
- 13. ATG AngularJs, İlkbahar
- 14. İlkbahar + Hazırda Bekletme + JPA
- 15. İlkbahar - özelliklerinden değeri
- 16. İlkbahar-hazırda eki
- 17. İlkbahar @Autowire alanı @Profile
- 18. sqli toplamı değil aşağıdaki cods veritabanı tablosunun bir sütunun toplamını çalışıyorum
- 19. Metin "görmek" nasıl yapılır?
- 20. Üretimde CKeditor'u görmek imkansız
- 21. İlkbahar-önyüklemede TaskScheduler nasıl etkinleştirilir?
- 22. Birim testi İlkbahar AOP yöntemleri
- 23. Yapılandırma İlkbahar önyüklemesinin dışındaki çıktılar
- 24. @WithMockUser, Entegrasyon Testi - İlkbahar önyükleme
- 25. Başlangıcında IllegalStateException İlkbahar JUnit testi
- 26. Sorularda yanlış matematik görmek nasıl?
- 27. SSMS'deki görüntüleri görmek ister misiniz?
- 28. geçmesine nasıl parametreler ilkbahar-mvc sayfayı yeniden yönlendirmek için
- 29. İlkbahar UygulamaListenlerimden birinin en son çalıştırılmasını sağlayabilir miyim?
- 30. Tembel/İstekli yükleme/Neo4j/İlkbahar-Veri alma
Netleştirmek için, SQL'i '?' Ile görmek isterim. İçinde tüm sürecin doğru çalıştığından emin olmak için. – Artem
Merhaba Artem, Bunu kodunuzda başardınız mı? –