Package org.nuiton.profiling
Class NuitonTrace
- java.lang.Object
-
- org.nuiton.profiling.NuitonTrace
-
public abstract class NuitonTrace extends Object
Permet de tracer les appels aux methodes.Mise en place
Il faut mettre dans les dependances Maven le nuiton-profiling$lt;dependency$gt; $lt;groupId$gt;org.nuiton$lt;/groupId$gt; $lt;artifactId$gt;nuiton-profiling$lt;/artifactId$gt; $lt;version$gt;2.7$lt;/version$gt; $lt;/dependency$gt;Pour l'utiliser il faut définir un fichier XML aop.xml dans le repertoire META-INF ou WEB-INF qui intercepte les methodes souhaiter.<!DOCTYPE aspectj PUBLIC "-//AspectJ//DTD//EN" "http://www.eclipse.org/aspectj/dtd/aspectj.dtd"$gt; $lt;aspectj$gt; $lt;weaver options="-verbose"$gt; $lt;exclude within="fr.insee..*CGLIB*"/$gt; $lt;/weaver$gt; $lt;aspects$gt; $lt;concrete-aspect name="org.nuiton.profiling.NuitonTraceAppAspect" extends="org.nuiton.profiling.NuitonTrace"$gt; $lt;pointcut name="executeMethod" expression=" execution(* org.nuiton..*(..)) || execution(* org.chorem..*(..)) || execution(* org.apache..*(..)) || execution(* ognl..*(..))"/$gt; $lt;/concrete-aspect$gt; $lt;/aspects$gt; $lt;/aspectj$gt;Ensuite il faut lancer la JVM avec l'option-javaagent:path/to/aspectjweaver-1.7.1.jar
normalement il se trouve dans le repo maven dans le repertoire- $MAVEN_REPO/org/aspectj/aspectjweaver/1.7.1/aspectjweaver-1.7.1.jar
Utilisation
Il y a 3 modes: interactif, non interactif et par programmationMode non interactif
Il faut mettre le nom d'un fichier dans la variable d'environnnementAUTO_SAVE_FILENAME_OPTION. Dans ce cas lors de l'arrêt de la JVM les statistiques sont ecrites dans ce fichier.Mode interactif
Il est possible de demander a a NuitonTrace lorsqu'il s'initialise de demarrer un serveur Web qui permet de voir et recuperer les donnees statistiques. Pour cela il faut indique sur quel port le serveur doit attendre via la variable d'environnnementPORT_OPTIONPar programmation
Pour afficher les statistiques dans votre programme- log.info(NuitonTrace.getStatisticsAndClear());
- NuitonTrace.printStatistiqueAndClear();
Autre mode de fonctionnement
Il doit être possible, plutot que d'écrire un fichier XML, de sous classer NuitonTrace en ajoutant par exemple\@Expression( "execution(* fr.ifremer.isisfish.datastore.ResultStorage.*(..))" + "|| execution(* fr.ifremer.isisfish.aspect.Cache.*(..))" + "|| execution(* fr.ifremer.isisfish.aspect.Trace.*(..))" + "|| execution(* org.nuiton.topia..*(..))" + "|| execution(* org.nuiton.math.matrix..*(..))" + "|| execution(* fr.ifremer.isisfish.types..*(..))" + "|| execution(* org.apache.commons.collections..*(..))" ) Pointcut executeMethod;
- Author:
- bpoussin : poussin@codelutin.com, tchemit : chemit@codelutin.com
-
-
Field Summary
Fields Modifier and Type Field Description static StringAUTO_SAVE_FILENAME_OPTIONconstante determinant le nom de la variable d'environnement a lire pour connaitre le nom du fichier de sauvegarde a la sortie de la JVMstatic StringDISTINCT_THREAD_CALL_OPTIONconstante determinant le nom de la variable d'environnement a lire pour savoir si les statistiques des threads doivent etre melange ou nonprotected static booleaninitilizedIndique si nuiton trace a deja ete initialise ou nonstatic StringPORT_OPTIONconstante determinant le nom de la variable d'environnement a lire pour connaitre le port a utiliser pour le serveur webstatic Tracetracestatistique de tous les appels
-
Constructor Summary
Constructors Constructor Description NuitonTrace()
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description static voidclearStatistics()protected static StringgetOption(String optionName)Permet de lire les options de la ligne de commande Java (-D) et si non trouver de rechercher dans les variables d'environnementstatic StringgetStatisticsAndClear()static StringgetStatisticsCSVAndClear()static StringgetStatisticsJson()protected static voidinit()Recherche la configuration dans les variables d'environnement et les utilise pour mettre en place ce qui est demande par l'utilisateurstatic voidmain(String... args)Force le lancement du serveur web, permet d'avoir le serveur sur une machine pour monitorer une application qui est sur une autre.static voidprintStatisticsAndClear()static voidprintStatisticsAndClear(PrintStream printer)voidtraceAfterExecute(org.aspectj.lang.JoinPoint jp)voidtraceAfterThrowingExecute(org.aspectj.lang.JoinPoint jp)voidtraceBeforeExecute(org.aspectj.lang.JoinPoint jp)
-
-
-
Field Detail
-
trace
public static Trace trace
statistique de tous les appels
-
DISTINCT_THREAD_CALL_OPTION
public static final String DISTINCT_THREAD_CALL_OPTION
constante determinant le nom de la variable d'environnement a lire pour savoir si les statistiques des threads doivent etre melange ou non- Since:
- 2.7.2
- See Also:
- Constant Field Values
-
PORT_OPTION
public static final String PORT_OPTION
constante determinant le nom de la variable d'environnement a lire pour connaitre le port a utiliser pour le serveur web- Since:
- 2.7
- See Also:
- Constant Field Values
-
AUTO_SAVE_FILENAME_OPTION
public static final String AUTO_SAVE_FILENAME_OPTION
constante determinant le nom de la variable d'environnement a lire pour connaitre le nom du fichier de sauvegarde a la sortie de la JVM- Since:
- 2.7
- See Also:
- Constant Field Values
-
initilized
protected static boolean initilized
Indique si nuiton trace a deja ete initialise ou non- Since:
- 2.7
-
-
Method Detail
-
traceBeforeExecute
public void traceBeforeExecute(org.aspectj.lang.JoinPoint jp)
-
traceAfterThrowingExecute
public void traceAfterThrowingExecute(org.aspectj.lang.JoinPoint jp)
-
traceAfterExecute
public void traceAfterExecute(org.aspectj.lang.JoinPoint jp)
-
getStatisticsCSVAndClear
public static String getStatisticsCSVAndClear()
- Returns:
- les statistiques in CSV format
-
getStatisticsJson
public static String getStatisticsJson()
- Returns:
- les statistiques in json format
- Since:
- 2.7
-
clearStatistics
public static void clearStatistics()
- Since:
- 2.7
-
getStatisticsAndClear
public static String getStatisticsAndClear()
- Returns:
- les statistiques
-
printStatisticsAndClear
public static void printStatisticsAndClear()
-
printStatisticsAndClear
public static void printStatisticsAndClear(PrintStream printer)
-
getOption
protected static String getOption(String optionName)
Permet de lire les options de la ligne de commande Java (-D) et si non trouver de rechercher dans les variables d'environnement- Parameters:
optionName-- Returns:
- la valeur de l'option ou null si non trouve
- Since:
- 2.7
-
init
protected static void init()
Recherche la configuration dans les variables d'environnement et les utilise pour mettre en place ce qui est demande par l'utilisateur- Since:
- 2.7
-
main
public static void main(String... args)
Force le lancement du serveur web, permet d'avoir le serveur sur une machine pour monitorer une application qui est sur une autre. L'avantage est de pouvoir centraliser les sauvegardes sur le meme domaine web- Parameters:
args- le port a utiliser si vide utilise les variables d'environnement et en dernier recourrs utilise le port 4488
-
-