Wie Sie sich die Zeit, die Methoden in Springframework?
Ist es möglich, in springframework melden sich die Zeit, die Methoden [ selektiven | all ] automatisch. Mit automatisch meine ich, ich will nicht gehen, um jede Methode und schreiben das Protokoll.debug ( "...." ); Zeug.
InformationsquelleAutor Rakesh Juyal | 2009-09-30
Du musst angemeldet sein, um einen Kommentar abzugeben.
AOP ist, was Sie hier benötigen. AOP ermöglicht es Ihnen, code zu Ihrer Anwendung hinzufügen, ohne änderungen am ursprünglichen code. Spring AOP bevorzugt um dies zu erreichen mit Proxy Objekte. Proxy - Objekte verwenden einen Dekorator-Muster wickeln Sie das original Ziel Objekt, und fügen Sie code. Die Proxy ist konfiguriert, um eine oder mehrere Schnittstellen implementieren der ursprünglichen Ziel Objekt.
Hier zur Zeit eine Anwendung, die Idee ist, die
PerformanceMonitorInterceptor
, einer der performance-überwachung-Klassen, das Schiff mit dem Spring-Framework.Die erste option ist die Verwendung der Frühjahr-Klasse
ProxyFactoryBean
zu erstellen Spring AOP Proxy Objekte. Um dies zu tun:PerformanceMonitorInterceptor
:RegexpMethodPointcutAdvisor
:ProxyFactoryBean
proxy zu Ihrem original bean und Ihre BeraterPerformanceMonitorInterceptor
zu TRACEUnten eine Spring-Konfiguration, die veranschaulicht diese Schritte:
Wird und die Konfiguration der Log-level für die
PerformanceMonitorInterceptor
:Beginnend mit Spring 2.0 gibt es eine weitere option: mit Spring 2.0 XML-Schema-basierte Konfiguration und Feder AspectJ-Stil pointcut-Ausdrücke. Mit der
ProxyFactoryBean
müssen Sie ausdrücklich erklären, die Schnittstellen, die Sie wollen proxy; mit der<aop:config>
und<aop:advisor>
- tags, können Sie automatisch proxy-jede Oberfläche jedes Objekts in den Bohnenbehälter.wirklich gut. Herzlichen Glückwunsch
Ich weiß nicht warum, aber es funktioniert nicht.Auch Bearbeiten Sie den code aus <property name="advice" ref="timingLogger"> , <property name="advice" ref="timingLogger"/>
nur es ist keine Anmeldung, nichts, ich habe die Linie u angegeben, aktivieren Sie den TRACE, das Ding hat nicht geklappt. Dann löschte ich meine vorhandenen log4j prop und erstellt eine neue mit alles, was Sie mentiond, selbst dann bin ich nicht immer alles im log. 😐
Das Konfigurations-snippet auf Ihrer eigenen wird nichts tun. Sie müssen erklären, eine Spring AOP BeanPostProcessor (oder ist es ein BeanFactoryPostProcessor) , auto-proxy die Bohnen mit der timingAdvisor.
InformationsquelleAutor Pascal Thivent
Können Sie einen Blick auf stagemonitor. Es ist ein open-source-java-web-application performance monitor. Es fängt Antwort-Zeit-Metriken JVM-Metriken, Anfrage-details (einschließlich einer call-stack gefangen von der Anfrage profiler) und mehr. Der overhead ist sehr gering.
Optional können Sie die große, timeseries Datenbank Graphit mit es zu speichern eine lange Geschichte der Datenpunkte, die man sich anschauen kann mit fancy dashboards.
Beispiel Screenshot:
Werfen Sie einen Blick auf die Projekt-website, um zu sehen, mehr screenshots, Funktionsbeschreibungen und Dokumentationen.
Hinweis: ich bin der Entwickler von stagemonitor
InformationsquelleAutor Felix
Schließlich ich herausgefunden, wie dies zu tun.
Zunächst Lesen Sie die post von 'Pascal Thivent', es hat mir eine sehr große Hilfe. Nach der änderung der log4j.Eigenschaften und Erstellung der timingAdvisor, was Sie haben, ist, die Bindung dieser Berater auf die Klasse, die Sie wan-zu-aktivieren Sie das debugging. Haben Sie den code ändern möchten.
früheren code:
Neuen code.
InformationsquelleAutor Rakesh Juyal
Können Sie AspectJ für diese deklarieren Sie eine log-pointcut genannt von wildcard mit pre - und post-Behandlung von vor() und nach ( - ) Beratung.
InformationsquelleAutor Arne Burmeister
Sehe ich, dass es bereits eine akzeptierte Antwort hier, aber ich möchte alle ermutigen, einen Blick auf das neueste release von Spring Toolsuite (SpringSource - Distribution von Eclipse). Es kommt mit ein profiling-utility out of the box, Spring Insight, das bietet genau diese Statistiken, die zur Laufzeit in ein schönes format. Gerade die Bereitstellung Ihrer app in Ihren internen tomcat, schlagen Sie ein paar Seiten, dann gehen Sie zu dem /Einblick servlet und sehen Sie sich die Zeit genommen, in jeder Methode aufgerufen, die alle der Weg nach unten, um die SQL-Anweisungen ausgeführt wurden und wie lange Sie gedauert hat.
Hier ist ein link auf einen interessanten Kommentar zum Thema Frühling Einsicht, dass sollte bekommen, was Sie wollen in nur wenigen Minuten. http://www.dotkam.com/2009/10/28/spring-insight-in-action-5-minutes-from-scratch/
InformationsquelleAutor