যেহেতু এটি একটি খুব সাধারণ প্রশ্ন, আমি এই নিবন্ধটি লিখেছি
, যার ভিত্তিতে এই উত্তরটি ভিত্তিক।
সেটিংস এড়াতে
আপনার এই সেটিংটি ব্যবহার করা উচিত নয়:
spring.jpa.show-sql=true
সমস্যাটি show-sql
হ'ল এসকিউএল স্টেটমেন্টগুলি কনসোলে মুদ্রিত হয়, সুতরাং এগুলি ফিল্টার করার কোনও উপায় নেই, কারণ আপনি সাধারণত লগিং ফ্রেমওয়ার্কটি করে যাবেন।
হাইবারনেট লগিং ব্যবহার করা
আপনার লগ কনফিগারেশন ফাইলে, আপনি যদি নিম্নলিখিত লগার যুক্ত করেন:
<logger name="org.hibernate.SQL" level="debug"/>
তারপরে, জেবিবিসি তৈরি হওয়ার পরে হাইবারনেট এসকিউএল স্টেটমেন্টগুলি মুদ্রণ করবে PreparedStatement
। এজন্য প্যারামিটার স্থানধারক ব্যবহার করে বিবৃতিটি লগ করা হবে:
INSERT INTO post (title, version, id) VALUES (?, ?, ?)
আপনি যদি বাইন্ড প্যারামিটারের মানগুলি লগ করতে চান তবে কেবল নীচের লগারটি যুক্ত করুন:
<logger name="org.hibernate.type.descriptor.sql.BasicBinder" level="trace"/>
একবার আপনি BasicBinder
লগার সেট করার পরে আপনি দেখতে পাবেন যে বাইন্ড প্যারামিটার মানগুলিও লগ আছে:
DEBUG [main]: o.h.SQL - insert into post (title, version, id) values (?, ?, ?)
TRACE [main]: o.h.t.d.s.BasicBinder - binding parameter [1] as [VARCHAR] - [High-Performance Java Persistence, part 1]
TRACE [main]: o.h.t.d.s.BasicBinder - binding parameter [2] as [INTEGER] - [0]
TRACE [main]: o.h.t.d.s.BasicBinder - binding parameter [3] as [BIGINT] - [1]
ডেটাসোর্স-প্রক্সি ব্যবহার করে
ডেটাউত্স-প্রক্সি প্রক্সি প্রকৃত JDBC এর আপনি করতে পারবেন DataSource
হিসাবে নিম্নলিখিত ডায়াগ্রাম দ্বারা চিত্রিত:
আপনি dataSource
হ'ল শিমটি নিম্নরূপে হাইবারনেট দ্বারা ব্যবহৃত হবে তা সংজ্ঞায়িত করতে পারেন :
@Bean
public DataSource dataSource(DataSource actualDataSource) {
SLF4JQueryLoggingListener loggingListener = new SLF4JQueryLoggingListener();
loggingListener.setQueryLogEntryCreator(new InlineQueryLogEntryCreator());
return ProxyDataSourceBuilder
.create(actualDataSource)
.name(DATA_SOURCE_PROXY_NAME)
.listener(loggingListener)
.build();
}
লক্ষ্য করুন যে actualDataSource
অবশ্যই আপনার অ্যাপ্লিকেশনটিতে আপনি DataSource
যে সংযোগ পুলটি ব্যবহার করছেন তা দ্বারা সংজ্ঞায়িত করতে হবে ।
একবার সক্ষম হয়ে গেলে datasource-proxy
, এসকিউএল স্টেটমেন্টটি নীচে লগ হতে চলেছে:
Name:DATA_SOURCE_PROXY, Time:6, Success:True,
Type:Prepared, Batch:True, QuerySize:1, BatchSize:3,
Query:["insert into post (title, version, id) values (?, ?, ?)"],
Params:[(Post no. 0, 0, 0), (Post no. 1, 0, 1), (Post no. 2, 0, 2)]
logging.level.org.hibernate.type=TRACE