perf4j @Profilierten annotation funktioniert nicht
Ich gegangen thru den folgenden link aus perf4J Website und getan haben, dieselben zu gleichen: http://perf4j.codehaus.org/devguide.html#Using_Spring_AOP_to_Integrate_Timing_Aspects
Hinzugefügt, die folgenden in meinem spring.xml.
<aop:aspectj-autoproxy/>
<bean id="timingAspect" class="org.perf4j.log4j.aop.TimingAspect"/>
<bean id="wscClientBase" class="com.xyz.csa.core.common.WscClientBase"/>
In der Klasse WscClientBase ich habe folgende Methode mit @Profilierten annotation.
@Profiled(tag = "SOAPCALLTEST")
public Object sendMessage(Object message) {
String msg = message.toString();
if (msg.indexOf(' ') > 1) {
msg = msg.substring(1, msg.indexOf(' '));
}
try {
Object ret = marshalSendAndReceive(message);
return ret;
} catch (RuntimeException ex) {
throw ex;
}
}
Ich sehe nicht die perf4j TimingLogger Aussagen, in der Anwendung protokollieren. Aber wenn ich es aufdringlich (ohne annotation) als unten, ich sehe den log-Anweisungen erfolgreich.
public Object sendMessage(Object message) {
String msg = message.toString();
if (msg.indexOf(' ') > 1) {
msg = msg.substring(1, msg.indexOf(' '));
}
StopWatch stopWatch = new Slf4JStopWatch();
try {
Object ret = marshalSendAndReceive(message);
stopWatch.stop("PERF_SUCCESS_TAG", msg);
return ret;
} catch (RuntimeException ex) {
stopWatch.stop("PERF_FAILURE_TAG", msg);
throw ex;
}
}
Bin ich etwas fehlt?
- Alle Codehaus-Dienste wurden beendet. Ihr link zu Codehaus ist gebrochen.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Perf4j
Dies ist eine performance-Analyse und überprüfung plugin für die Anwendung. Es kann sein, integriert mit Feder mit spring AOP. Es erstellt eine log-file geben, um einen parser zu analysieren und zu produzieren, die für Sie relevanten Informationen. Es kann average,Mittelwert, std-Abweichung vom Standard.
Für mehr Allgemeine Informationen überprüfen Sie bitte http://perf4j.codehaus.org/index.html
How to setup Perf4j.
Für den normalen setup, die Sie gerade brauchen, um hinzuzufügen, perf4j jar und erstellen Stoppuhr-Instanz für jedes code-sniplet, das Sie überwachen möchten.
Dadurch wird perf4j monitor und Sie erhalten logg Informationen auf die Konsole.
Hauptziel dieser Dokumentation ist es, eine setup setup Verständnis von Integration perf4j mit Feder.
1.Fügen Sie alle Jar-Datei.
Stellen Sie sicher, Sie haben alle diese jar-Datei in deinen class-path, der zusammen mit Frühling-Bibliothek.
2.erstellen Sie Ihre eigenen logback.xml die perf4j implizit
die Inhalte der logback.xml wird
3.In Ihrer spring Konfigurations-Datei, die Sie hinzufügen müssen aspectj-Tags, die es erlauben wird @Profilierten annotation von perf4j.
**> (Achtung: das @Profilierten annotation?: fügen Sie dieses tag an alle
4.Erstellen Sie die Test-Klasse, die Umsetzung @Profilierten annotation.
5.Ok, jetzt haben Sie das setup jedes Ding, was bleibt, ist die test-Klasse, die beginnen Frühling Kontext und mit es laden perf4j.
Ich hoffe, durch die folgende setups sollten Sie in der Lage sein, um perf4j console appender zur Anzeige einer Zeile auf der Konsole.
Perf4j Überwachung auf den Befehl log
Für die Generierung von Performance statistischen Informationen führen Sie auf logger Weg
java-jar perf4j-0.9.16.jar myLogger.melden Sie
Für Die Generierung Von Graphen
java-jar perf4j-0.9.16.jar --graph perfGraphs.aus myLogger.melden Sie
Ich hoffe dieses tutorial hilft Ihnen die integrierte Feder,perf4j,logback mit Profilierten annotation.
Versuchen Sie, hinzufügen <
aop:include name="timingAspect"/>
innerhalb der<aop:aspectj-autoproxy/>
.Können Sie auch bestätigen, dass Sie das aufrufen von sendMessage auf ein Objekt, das abgerufen wird von der spring application context (mit getBean oder injiziert werden, da eine Abhängigkeit).
Hier habe ich zwei Möglichkeiten, um perf4j @Profilierten Arbeit an der spring-boot-Projekt.
Voraussetzung ist das hinzufügen von unten Abhängigkeiten
Für den normalen Frühlings-Projekt, müssen wahrscheinlich hinzufügen wenig mehr Abhängigkeiten wie spring-aop, aopalliance... die sieht enthalten in spring-boot-starter-Eltern -
1. Java Konfiguration
Dies ist der einfachste Weg und funktioniert auch meistens, aber ich fand, dass das irgendwie nicht funktioniert auf Frühling-Daten JpaRepository Methode. Es stellt nur org.perf4j.log4j.aop.TimingAspect bean und tun aspectj autoproxing. Genauso, wie das xml-Konfiguration bereitgestellt, die von anderen Menschen über
2. Bieten Sie Ihre eigenen Aspekt
In dieser Art und Weise, die @Profilierten annotierten spring-data-repository interface-Methoden auch funktionieren. Aber der Nachteil ist das ignorieren der tag in @Profilierte(tag='ein tag') und mit dem joinPoint-Methode-Namen als tag.
Der Grund, warum es nicht funktionieren konnte, ist, dass die profilierten Methode in der übergeordneten Klasse der Spring-bean. Ich kann es sagen, durch den Blick auf Ihre bean-name: WscClientBase. Ich nehme an, dies ist die Basis-Klasse, von dem Sie viele Kinder Klassen.
Nachdem einige der Forschung Zeit fand ich sehr wichtig beachten Sie im Frühjahr eine Dokumentation über @Transactional und @Cacheable.
In beiden Fällen sagen Sie Dinge wie diese:
Und unten...
Ich gehe davon aus, dass @Profilierten ähnliche Weben Mechanismus, deshalb man kann keine @Profiliert auf eine beliebige Methode in der übergeordneten Klassen.
Als eine Angelegenheit von Tatsache, ich hatte ähnliches Problem in meiner Anwendung: ich hatte @Profiliert und @Cacheable in der übergeordneten Klasse und keiner von denen gearbeitet: ich sehe keine Datensätze in meine Perf4J log-und cache nicht aktualisiert wurde. Als ich umgezogen @Profiliert in die Methoden der Kinder-Klassen habe ich begonnen, sehen die Datensätze in der perf4j.log.
setzen config unten in Ihrem "servlet-context-config.xml" .Spaß haben!
Für Menschen, die diese Art von problem, Sie können überprüfen, dass es nicht im Frühjahr-Protokolle (Ebene info), Meldungen wie " es ist nicht berechtigt, für die erste verarbeitet alle BeanPostProcessors (zum Beispiel: nicht geeignet für auto-proxying)".