Ich habe Probleme herauszufinden, was passiert mit langsam ausgeführten Integrationstests, mit Slick, um in die Datenbank zu schreiben. Aber ich kann nicht herausfinden, wie ich über SLF4J auf die Diagnoseprotokollierung zugreifen kann.Wie kann ich diagnostische Debug-Informationen in meinen Slick-Tests sehen, um schlechte Leistung zu beheben?
Antwort
Ich habe das irgendwann selbst herausgefunden und es gibt zwei Komponenten für die Antwort.
Schlechte Leistung
Ich erkannte, dass meine schlechte Leistung aufgrund der synchronen Prüfung von Asynchron-APIs war. Ich verwende Scalatest zusammen mit dem eigenschaftsbasierten Testen von Scalacheck und verwende die Methode futureValue
zum Blockieren von Async-Anfragen. Aus irgendeinem Grund hatte ich die interval
der PatienceConfiguration
auf 500ms eingestellt, und so dauerte jeder Anruf mindestens eine halbe Sekunde, obwohl die Datenbankabfragen selbst in der Regel in höchstens 20ms ausgeführt werden, und normalerweise < 10ms. Ich habe das Intervall schließlich auf 2ms heruntergesetzt, und die Leistung wurde stark verbessert.
Scalatest 3 hat eine ordnungsgemäße asynchrone Testunterstützung, obwohl die Version 3.0.0-M15 GeneratorDrivenPropertyChecks
derzeit nicht async unterstützt. Dies might change.
Diagnoseprotokollierung
installierte ich den SLF4J einfache Protokollierung Backend mit dem SBT libraryDependencies
Eintrag von "org.slf4j" % "slf4j-simple" % "1.7.12"
. Ich konnte es nicht richtig funktionieren, indem ich die simple logger properties durch application.conf
setze.
Ich legte eine Java-Systemeigenschaft zu sagen SLF4J-einfach anmelden Debug-Modus org.slf4j.simpleLogger.defaultLogLevel=debug
und dann test
an der SBT-Eingabeaufforderung ausgeführt. Da dies zu einer absurden Menge an Ausgaben aus dem Slick-Abfragecompiler führte, setzte ich die Debugausgabe für die Logger dieses Compilers zurück auf info
, wodurch die zusätzliche Ausgabe weitgehend unterdrückt wurde, indem die Eigenschaft org.slf4j.simpleLogger.log.slick.compiler=info
hinzugefügt wurde. Auf diese Weise können Sie Logger-Ebenen ändern, die mit einem Präfix übereinstimmen.
Die Einstellung der Eigenschaften erwies sich als ein nicht-triviales Problem. Ich habe versucht, mehrere Ansätze:
die Eigenschaft über Typesafe Konfigurationseinstellung (
test/resources/application.conf
) durch Zusatz vonorg.slf4j.simpleLogger.defaultLogLevel=debug
nicht Arbeit tat. Dies ist normalerweise der Fall für Dinge, die von Systemeigenschaften vor dem Analysieren der Konfiguration eingerichtet werden, also nehme ich an, dass dies für den Logger der Fall ist.die Eigenschaft von der Kommandozeile einstellen, wenn SBT Inbetriebnahme gearbeitet, von SBT beginnend mit
sbt -Dorg.slf4j.simpleLogger.defaultLogLevel=debug
, aber nur, wenn sie mit dem SBT Einstellungfork in test := false
Tests in einer nicht-gegabelten JVM ausgeführt wird.Einstellung der Eigenschaft von SBT mit
javaOptions += "org.slf4j.simpleLogger.defaultLogLevel=debug"
tat nicht Arbeit, gegabelte JVM oder nicht.Die Einstellung der Eigenschaft durch Hinzufügen von
org.slf4j.simpleLogger.defaultLogLevel=debug
zutest/resources/simplelogger.properties
funktionierte sowohl für gegabelte JVM als auch ungeforkt.
- 1. Ich kann meinen Fehler nicht beheben
- 2. MITMProxy schlechte Leistung
- 3. HTML zu PDF - Schlechte Leistung
- 4. Ich kann meinen Remote-Zweig nicht sehen
- 5. iphone: Schlechte UIImageView Leistung
- 6. Wer kann meinen Singleton sehen?
- 7. Schlechte WebAPI-Leistung
- 8. Guava Sets.intersection schlechte Leistung
- 9. Schlechte Leistung mit WindowsTokenRoleProvider
- 10. Wie zu sehen, wer meinen Webservice konsumiert
- 11. HHVM schlechte Leistung
- 12. Jboss Anwendung schlechte Leistung
- 13. JavaFX: hostservices.showDocument() schlechte Leistung
- 14. Fehlerbehebung Azure Search schlechte Leistung
- 15. Warum kann WIA meinen Scanner nicht sehen?
- 16. A * PathFinding schlechte Leistung
- 17. Schlechte Leistung mit CATransform3D
- 18. Schlechte Leistung Kontextmenü
- 19. Wie kann ich Scripy schreiben, um Url Website zu sehen?
- 20. Xcode 6.0.1 schlechte Leistung
- 21. Schlechte Leistung Sqlite.net Erweiterungen
- 22. Schlechte Boost.ASIO Leistung
- 23. Wie kann ich meinen Scanner wiederverwenden?
- 24. Schlechte camera2 Videoaufnahme-Leistung
- 25. Schlechte Leistung postgres sql
- 26. Wie kann ich diesen Fehler zu beheben:
- 27. Wie zu beheben schlechte dd img schreiben auf sdcard
- 28. Javadoc: Wie zu beheben: „schlechte HTML-Entität“ Fehler
- 29. Ich brauche Hilfe, meinen Fehler mit diesem Code zu sehen
- 30. redis + gevent - Schlechte Leistung - was mache ich falsch?