Heim >Datenbank >MySQL-Tutorial >Wie protokolliere ich detaillierte SQL-Abfragen mit Parameterwerten im Ruhezustand?

Wie protokolliere ich detaillierte SQL-Abfragen mit Parameterwerten im Ruhezustand?

DDD
DDDOriginal
2025-01-22 22:32:10947Durchsuche

How to Log Detailed SQL Queries with Parameter Values in Hibernate?

Detailliertes SQL-Protokoll mit tatsächlichen Parameterwerten drucken

Bei der Verwendung von Hibernate ist es oft nützlich, die ausgeführten SQL-Abfragen anzuzeigen, insbesondere beim Debuggen oder Optimieren der Leistung. Standardmäßig protokolliert Hibernate jedoch SQL-Anweisungen mithilfe von Platzhaltern (Fragezeichen) anstelle der tatsächlichen Werte der Abfrageparameter.

Konfiguration des Ruhezustandsprotokolls

Wenn Sie Abfragen drucken müssen, die tatsächliche Werte enthalten, können Sie die folgenden Protokollierungskategorien konfigurieren:

  • org.hibernate.SQL: Auf Debug setzen, um alle ausgeführten SQL-DML-Anweisungen zu protokollieren.
  • org.hibernate.type: Auf Trace setzen, um alle JDBC-Parameter zu protokollieren.

Zum Beispiel mit der log4j-Konfiguration:

<code># 记录SQL语句
log4j.logger.org.hibernate.SQL=debug 

# 记录传递给查询的JDBC参数
log4j.logger.org.hibernate.type=trace </code>

Die erste Einstellung (org.hibernate.SQL) entspricht der Einstellung der Legacy-Eigenschaft hibernate.show_sql=true. Die zweite Einstellung (org.hibernate.type) druckt Bindungsparameter und andere Informationen.

Lösung ohne Ruhezustand

Eine andere Möglichkeit, Abfragen mit tatsächlichen Werten zu drucken, ist die Verwendung eines JDBC-Proxy-Treibers wie P6Spy. Dieser Treiber fängt alle SQL-Anweisungen ab und protokolliert Informationen mit detaillierten Informationen, einschließlich der tatsächlichen Werte der Abfrageparameter.

Das obige ist der detaillierte Inhalt vonWie protokolliere ich detaillierte SQL-Abfragen mit Parameterwerten im Ruhezustand?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn