Ich muss eine Grails-Anwendung mit einer wirklich langsamen Anfrage debuggen. Ich habe SQL-Logging aber möchte die Menge der SQL-Abfragen sehen, ohne sie manuell zu zählen.
%Vor%Damit eaxmple nach jeder Anfrage die folgende Zeile enthält (wobei x die Anzahl aller an den SQL-Server gestellten Abfragen ist):
[2012-10-04 13: 41: 45,049] [LoggingFilters] INFO - Anfrage beendet in 8296 ms und machte x SQL-Anweisungen
Nach etwas Googeln scheint das mit Grails nicht möglich zu sein, vielleicht könnte MySQL die Information liefern?
Sie können dies mithilfe von Filtern und Ruhezustandsstatistiken tun. Erstellen Sie die Klasse ExampleFilters.groovy im Ordner conf. Dies ist der Inhalt der Klasse:
%Vor%Wenn Sie mehr über verschiedene Hibernate-Statistiken lesen möchten, lesen Sie diesen Artikel: Ссылка
Beachten Sie auch, dass es bei der Verwendung zu Leistungseinbußen kommt. Daher sollte es nur in der Entwicklungsumgebung verwendet werden.
in Grails verwenden loggingSql
Sie werden feststellen, dass alle von Grails verwendeten SQL-Anweisungen protokolliert werden.
Wie Burt Beckwith in seinem Blogbeitrag "Stuff I Learned Consulting" sagte: Ссылка
SQL-Protokollierung
Es gibt zwei Möglichkeiten, die SQL-Ausgabe von Abfragen anzuzeigen. Hinzufügen von logSql = true in DataSource.groovy und Konfigurieren von Log4j-Loggern. Der Ansatz von Log4j ist viel flexibler, da er nicht nur auf stdout gespeichert wird, sondern auch auf eine Datei oder einen anderen Appender geroutet und bequem aktiviert und deaktiviert werden kann. Aber es stellt sich heraus, dass es einfach ist, die logSql SQL-Konsolenprotokollierung umzuschalten. Rufen Sie einen Verweis auf die sessionFactory-Bean ab (z. B. mithilfe der Abhängigkeitsinjektion mit def sessionFactory), und aktivieren Sie sie mit
%Vor%