application-tracer

Details

diff --git a/src/main/java/br/ufrgs/inf/prosoft/applicationtracer/TracerAspect.java b/src/main/java/br/ufrgs/inf/prosoft/applicationtracer/TracerAspect.java
index 1f16d39..d4cc0c8 100644
--- a/src/main/java/br/ufrgs/inf/prosoft/applicationtracer/TracerAspect.java
+++ b/src/main/java/br/ufrgs/inf/prosoft/applicationtracer/TracerAspect.java
@@ -9,6 +9,7 @@ import br.ufrgs.inf.prosoft.jsonserialiser.JSONSerialiser;
 import br.ufrgs.inf.prosoft.trace.Parameter;
 import br.ufrgs.inf.prosoft.trace.Return;
 import br.ufrgs.inf.prosoft.trace.Trace;
+import br.ufrgs.inf.prosoft.trace.TraceConcrete;
 import java.io.FileWriter;
 import java.io.IOException;
 import java.nio.file.Files;
@@ -56,7 +57,19 @@ public class TracerAspect {
                 System.out.println("[ApplicationTracer] skipping " + longsignature);
                 return proceed;
             }
-            System.out.println("[ApplicationTracer] tracing " + longsignature);
+            boolean verbose = endTime - startTime > 5;
+            if (verbose) {
+                String verboseTracer = System.getenv("TRACER_VERBOSE");
+                if (verboseTracer == null) {
+                    verboseTracer = "true";
+                }
+                if (verboseTracer.equals("false")) {
+                    verbose = false;
+                }
+            }
+            if (verbose) {
+                System.out.print("[ApplicationTracer] tracing " + longsignature + " ... ");
+            }
             String[] split = longsignature.substring(0, longsignature.length() - 1).split("\\(");
             String[] modifiersReturnAndName = split[0].split(" ");
             String[] modifiers = Arrays.copyOf(modifiersReturnAndName, modifiersReturnAndName.length - 2);
@@ -77,20 +90,24 @@ public class TracerAspect {
             } catch (Exception ex) {
                 instance = "s";
             }
-            Trace trace = new Trace(instance, Arrays.asList(modifiers), returnValue, methodName, parameters, startTime, endTime);
+            Trace trace = new TraceConcrete(instance, Arrays.asList(modifiers), returnValue, methodName, parameters, startTime, endTime);
             String tracesPath = System.getenv("TRACER_TRACES");
             if (tracesPath == null) {
                 tracesPath = "./traces";
             }
             synchronized (TracerAspect.class) {
-                System.out.println("[ApplicationTracer] serialising " + System.currentTimeMillis());
+                if (verbose) {
+                    System.out.print(System.currentTimeMillis() + " ... ");
+                }
                 String jsonTrace = JSONSerialiser.serialiseAcyclicObject(trace);
                 jsonTrace += "\n";
                 System.out.println("[ApplicationTracer] serialised " + System.currentTimeMillis());
                 try (FileWriter fileWriter = new FileWriter(tracesPath, true)) {
                     fileWriter.write(jsonTrace);
                 }
-                System.out.println("[ApplicationTracer] written " + System.currentTimeMillis());
+                if (verbose){
+                    System.out.println(System.currentTimeMillis());
+                }
             }
         } catch (Exception ex) {
             System.err.println("[ApplicationTracer] exception: " + ex);