मेरे पास logback-spring.xml में निम्न सेटिंग के साथ एक स्प्रिंग बूट एप्लिकेशन है

<logger name="org.hibernate.sql" level="DEBUG" additivity="false">
    <appender-ref ref="CONSOLE"/>
</logger>

लेकिन यह जनरेट किए गए SQL को तब तक लॉग नहीं करता जब तक कि मैं sql को इस तरह अपरकेस में नहीं बदलता

<logger name="org.hibernate.SQL" level="DEBUG" additivity="false">
    <appender-ref ref="CONSOLE"/>
</logger>

जो तब इस तरह लॉग स्टेटमेंट तैयार करता है

...org.hibernate.SQL                        : select count(disabled0_.user)

यह भी ध्यान देने योग्य है कि जब मैं लॉगर नाम में SQL पर होवर करता हूं तो IntelliJ किसी भी चीज़ से लिंक नहीं होता है। org.hibernate पर मंडराने पर यह पैकेज से जुड़ जाता है लेकिन SQL पर रुक जाता है। लेकिन यह इस तरह के अन्य विशिष्ट वर्गों से जुड़ता है

<logger name="org.hibernate.type.descriptor.sql.BasicBinder" level="TRACE" additivity="false" >
    <appender-ref ref="CONSOLE"/>
</logger>

उस एक में, BasicBinder पर मँडराते हुए कक्षा से लिंक होता है, और परिणाम जैसे

o.h.type.descriptor.sql.BasicBinder      : binding parameter [1] as [VARCHAR]

SQL को काम करने के लिए अपरकेस क्यों होना चाहिए?

मैं spring-boot-starter-data-jpa:1.5.10.RELEASE का उपयोग कर रहा हूं

1
secondbreakfast 18 अक्टूबर 2018, 17:24

1 उत्तर

सबसे बढ़िया उत्तर

SQL को अपरकेस में होना चाहिए, क्योंकि लकड़हारा नाम केस-संवेदी है। देखें यह उत्तर

IntelliJ कक्षा से लिंक नहीं कर सकता, क्योंकि यह वास्तव में एक वर्ग नहीं है, केवल हाइबरनेट लॉगर का नाम है। परंपरा के अनुसार, लकड़हारा नाम वर्ग का नाम है, लेकिन यह कोई आवश्यकता नहीं है, वे कोई भी स्ट्रिंग हो सकते हैं।

2
Richard Neish 18 अक्टूबर 2018, 15:35