Ist es in Hibernate möglich, generierte SQL-Abfragen mit echten Werten anstelle von Fragezeichen zu drucken?
Wie würden Sie vorschlagen, um Abfragen mit echten Werten zu drucken, wenn es nicht möglich ist, mit Hibernate API?
Ist es in Hibernate möglich, generierte SQL-Abfragen mit echten Werten anstelle von Fragezeichen zu drucken?
Wie würden Sie vorschlagen, um Abfragen mit echten Werten zu drucken, wenn es nicht möglich ist, mit Hibernate API?
<!-- A time/date based rolling appender -->
<appender name="FILE" class="org.apache.log4j.RollingFileAppender">
<param name="File" value="logs/system.log" />
<param name="Append" value="true" />
<param name="ImmediateFlush" value="true" />
<param name="MaxFileSize" value="200MB" />
<param name="MaxBackupIndex" value="100" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d %d{Z} [%t] %-5p (%F:%L) - %m%n" />
</layout>
</appender>
<appender name="journaldev-hibernate" class="org.apache.log4j.RollingFileAppender">
<param name="File" value="logs/project.log" />
<param name="Append" value="true" />
<param name="ImmediateFlush" value="true" />
<param name="MaxFileSize" value="200MB" />
<param name="MaxBackupIndex" value="50" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d %d{Z} [%t] %-5p (%F:%L) - %m%n" />
</layout>
</appender>
<logger name="com.journaldev.hibernate" additivity="false">
<level value="DEBUG" />
<appender-ref ref="journaldev-hibernate" />
</logger>
<logger name="org.hibernate" additivity="false">
<level value="INFO" />
<appender-ref ref="FILE" />
</logger>
<logger name="org.hibernate.type" additivity="false">
<level value="TRACE" />
<appender-ref ref="FILE" />
</logger>
<root>
<priority value="INFO"></priority>
<appender-ref ref="FILE" />
</root>
Logging funktioniert, aber nicht genau das, was Sie wollen und ich wollte vor einiger Zeit, aber P6Spy funktioniert perfekt .
Aquí ist auch ein einfaches Tutorium zu implementieren. Für mich funktionierte es wie Charme.
p6spy-install.jar
p6spy-install.jar
Datei, suchen Sie nach p6spy.jar
y spy.properties
p6spy.jar
in Ihre Projektbibliotheks-Abhängigkeitcom.p6spy.engine.spy.P6SpyDriver
)Original ist MySQL JDBC-Treiber -( com.mysql.jdbc.Driver
)
<session-factory>
<property name="hibernate.bytecode.use_reflection_optimizer">false</property>
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property> <!-- note the difference -->
<property name="hibernate.connection.password">password</property>
<property name="hibernate.connection.url">jdbc:mysql://localhost:3306/myuser</property>
<property name="hibernate.connection.username">root</property>
<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
<property name="show_sql">true</property>
</session-factory>
Geändert in P6Spy JDBC-Treiber ( com.p6spy.engine.spy.P6SpyDriver
)
<session-factory>
<property name="hibernate.bytecode.use_reflection_optimizer">false</property>
<property name="hibernate.connection.driver_class">com.p6spy.engine.spy.P6SpyDriver</property> <!-- note the difference -->
<property name="hibernate.connection.password">password</property>
<property name="hibernate.connection.url">jdbc:mysql://localhost:3306/myuser</property>
<property name="hibernate.connection.username">root</property>
<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
<property name="show_sql">true</property>
</session-factory>
spy.properties
Ersetzen Sie die realdriver
mit Ihrem vorhandenen MySQL JDBC-Treiber
realdriver=com.mysql.jdbc.Driver
# specifies another driver to use
realdriver2=
# specifies a third driver to use
realdriver3=
Ändern Sie den Speicherort der Protokolldatei in der logfile
Eigentum. Alle SQL-Anweisungen werden in dieser Datei protokolliert.
Fenster:
logfile=c:/spy.log
UNIX:
logfile=/srv/log/spy.log
spy.properties
zum Projektklassenpfad hinzufügen: Kopieren spy.properties
in den Root-Ordner Ihres Projekts. Stellen Sie sicher, dass Ihr Projekt Folgendes finden kann spy.properties
oder aber eine spy.properties file not found
wird eine Ausnahme ausgelöst.Die Lösung ist korrekt, protokolliert aber auch alle Bindungen für die Ergebnisobjekte. Um dies zu verhindern, ist es möglich, einen separaten Appender zu erstellen und die Filterung zu aktivieren. Zum Beispiel:
<!-- A time/date based rolling appender -->
<appender name="FILE_HIBERNATE" class="org.jboss.logging.appender.DailyRollingFileAppender">
<errorHandler class="org.jboss.logging.util.OnlyOnceErrorHandler"/>
<param name="File" value="${jboss.server.log.dir}/hiber.log"/>
<param name="Append" value="false"/>
<param name="Threshold" value="TRACE"/>
<!-- Rollover at midnight each day -->
<param name="DatePattern" value="'.'yyyy-MM-dd"/>
<layout class="org.apache.log4j.PatternLayout">
<!-- The default pattern: Date Priority [Category] Message\n -->
<param name="ConversionPattern" value="%d %-5p [%c] %m%n"/>
</layout>
<filter class="org.apache.log4j.varia.StringMatchFilter">
<param name="StringToMatch" value="bind" />
<param name="AcceptOnMatch" value="true" />
</filter>
<filter class="org.apache.log4j.varia.StringMatchFilter">
<param name="StringToMatch" value="select" />
<param name="AcceptOnMatch" value="true" />
</filter>
<filter class="org.apache.log4j.varia.DenyAllFilter"/>
</appender>
<category name="org.hibernate.type">
<priority value="TRACE"/>
</category>
<logger name="org.hibernate.type">
<level value="TRACE"/>
<appender-ref ref="FILE_HIBERNATE"/>
</logger>
<logger name="org.hibernate.SQL">
<level value="TRACE"/>
<appender-ref ref="FILE_HIBERNATE"/>
</logger>
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.