You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by ch...@apache.org on 2016/02/10 17:45:25 UTC

svn commit: r1729650 - in /sling/trunk/contrib/extensions/tracer/src: main/java/org/apache/sling/tracer/internal/ test/java/org/apache/sling/tracer/internal/

Author: chetanm
Date: Wed Feb 10 16:45:25 2016
New Revision: 1729650

URL: http://svn.apache.org/viewvc?rev=1729650&view=rev
Log:
SLING-5505 - Allow recording of caller stacktrace with the logs

Refactor to pass on TracerConfig to recording such that extra options for given logger can be accessed

Modified:
    sling/trunk/contrib/extensions/tracer/src/main/java/org/apache/sling/tracer/internal/JSONRecording.java
    sling/trunk/contrib/extensions/tracer/src/main/java/org/apache/sling/tracer/internal/LogTracer.java
    sling/trunk/contrib/extensions/tracer/src/main/java/org/apache/sling/tracer/internal/Recording.java
    sling/trunk/contrib/extensions/tracer/src/main/java/org/apache/sling/tracer/internal/TracerContext.java
    sling/trunk/contrib/extensions/tracer/src/test/java/org/apache/sling/tracer/internal/JSONRecordingTest.java
    sling/trunk/contrib/extensions/tracer/src/test/java/org/apache/sling/tracer/internal/LogTracerModelTest.java

Modified: sling/trunk/contrib/extensions/tracer/src/main/java/org/apache/sling/tracer/internal/JSONRecording.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/tracer/src/main/java/org/apache/sling/tracer/internal/JSONRecording.java?rev=1729650&r1=1729649&r2=1729650&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/tracer/src/main/java/org/apache/sling/tracer/internal/JSONRecording.java (original)
+++ sling/trunk/contrib/extensions/tracer/src/main/java/org/apache/sling/tracer/internal/JSONRecording.java Wed Feb 10 16:45:25 2016
@@ -116,7 +116,7 @@ class JSONRecording implements Recording
     //~---------------------------------------< Recording >
 
     @Override
-    public void log(Level level, String logger, FormattingTuple tuple) {
+    public void log(TracerConfig tc, Level level, String logger, FormattingTuple tuple) {
         Object[] params = tuple.getArgArray();
         if (TracerContext.QUERY_LOGGER.equals(logger)
                 && params != null && params.length == 2) {

Modified: sling/trunk/contrib/extensions/tracer/src/main/java/org/apache/sling/tracer/internal/LogTracer.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/tracer/src/main/java/org/apache/sling/tracer/internal/LogTracer.java?rev=1729650&r1=1729649&r2=1729650&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/tracer/src/main/java/org/apache/sling/tracer/internal/LogTracer.java (original)
+++ sling/trunk/contrib/extensions/tracer/src/main/java/org/apache/sling/tracer/internal/LogTracer.java Wed Feb 10 16:45:25 2016
@@ -419,11 +419,12 @@ public class LogTracer {
                 return FilterReply.NEUTRAL;
             }
 
-            if (tracer.shouldLog(logger.getName(), level)) {
+            TracerConfig tc = tracer.findMatchingConfig(logger.getName(), level);
+            if (tc != null) {
                 if (format == null) {
                     return FilterReply.ACCEPT;
                 }
-                if (tracer.log(level, logger.getName(), format, params)) {
+                if (tracer.log(tc, level, logger.getName(), format, params)) {
                     return FilterReply.ACCEPT;
                 }
             }

Modified: sling/trunk/contrib/extensions/tracer/src/main/java/org/apache/sling/tracer/internal/Recording.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/tracer/src/main/java/org/apache/sling/tracer/internal/Recording.java?rev=1729650&r1=1729649&r2=1729650&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/tracer/src/main/java/org/apache/sling/tracer/internal/Recording.java (original)
+++ sling/trunk/contrib/extensions/tracer/src/main/java/org/apache/sling/tracer/internal/Recording.java Wed Feb 10 16:45:25 2016
@@ -26,7 +26,7 @@ import org.slf4j.helpers.FormattingTuple
 interface Recording {
     Recording NOOP = new Recording() {
         @Override
-        public void log(Level level, String logger, FormattingTuple tuple) {
+        public void log(TracerConfig tc, Level level, String logger, FormattingTuple tuple) {
 
         }
 
@@ -36,7 +36,7 @@ interface Recording {
         }
     };
 
-    void log(Level level, String logger, FormattingTuple tuple);
+    void log(TracerConfig tc, Level level, String logger, FormattingTuple tuple);
 
     /**
      * Register the {@link RequestProgressTracker} associated with

Modified: sling/trunk/contrib/extensions/tracer/src/main/java/org/apache/sling/tracer/internal/TracerContext.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/tracer/src/main/java/org/apache/sling/tracer/internal/TracerContext.java?rev=1729650&r1=1729649&r2=1729650&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/tracer/src/main/java/org/apache/sling/tracer/internal/TracerContext.java (original)
+++ sling/trunk/contrib/extensions/tracer/src/main/java/org/apache/sling/tracer/internal/TracerContext.java Wed Feb 10 16:45:25 2016
@@ -69,19 +69,23 @@ class TracerContext {
         Arrays.sort(tracers);
     }
 
-    public boolean shouldLog(String logger, Level level) {
+    /**
+     * Finds and returns the matching TracerConfig for given logger and level
+     * If non null it indicates that logging should proceed
+     */
+    public TracerConfig findMatchingConfig(String logger, Level level) {
         for (TracerConfig tc : tracers) {
             TracerConfig.MatchResult mr = tc.match(logger, level);
             if (mr == TracerConfig.MatchResult.MATCH_LOG) {
-                return true;
+                return tc;
             } else if (mr == TracerConfig.MatchResult.MATCH_NO_LOG) {
-                return false;
+                return null;
             }
         }
-        return false;
+        return null;
     }
 
-    public boolean log(Level level, String logger, String format, Object[] params) {
+    public boolean log(TracerConfig tc, Level level, String logger, String format, Object[] params) {
         FormattingTuple tuple = null;
         if (QUERY_LOGGER.equals(logger)
                 && params != null && params.length == 2) {
@@ -94,7 +98,7 @@ class TracerContext {
         }
 
         if (tuple != null) {
-            recording.log(level, logger, tuple);
+            recording.log(tc, level, logger, tuple);
         }
         return tuple != null;
     }

Modified: sling/trunk/contrib/extensions/tracer/src/test/java/org/apache/sling/tracer/internal/JSONRecordingTest.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/tracer/src/test/java/org/apache/sling/tracer/internal/JSONRecordingTest.java?rev=1729650&r1=1729649&r2=1729650&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/tracer/src/test/java/org/apache/sling/tracer/internal/JSONRecordingTest.java (original)
+++ sling/trunk/contrib/extensions/tracer/src/test/java/org/apache/sling/tracer/internal/JSONRecordingTest.java Wed Feb 10 16:45:25 2016
@@ -39,6 +39,8 @@ import static org.mockito.Mockito.when;
 public class JSONRecordingTest {
     private HttpServletRequest request = mock(HttpServletRequest.class);
 
+    private TracerConfig tc = new TracerConfig(TracerContext.QUERY_LOGGER, Level.INFO);
+
     @Test
     public void logQueries() throws Exception{
         StringWriter sw = new StringWriter();
@@ -46,8 +48,8 @@ public class JSONRecordingTest {
         when(request.getMethod()).thenReturn("GET");
         JSONRecording r = new JSONRecording("abc", request, true);
 
-        r.log(Level.INFO, TracerContext.QUERY_LOGGER, MessageFormatter.arrayFormat("foo bar", new Object[]{"x" , "y"}));
-        r.log(Level.INFO, TracerContext.QUERY_LOGGER, MessageFormatter.arrayFormat("foo bar", new Object[]{"x" , "z"}));
+        r.log(tc, Level.INFO, TracerContext.QUERY_LOGGER, MessageFormatter.arrayFormat("foo bar", new Object[]{"x" , "y"}));
+        r.log(tc, Level.INFO, TracerContext.QUERY_LOGGER, MessageFormatter.arrayFormat("foo bar", new Object[]{"x" , "z"}));
 
         r.done();
         r.render(sw);
@@ -79,9 +81,9 @@ public class JSONRecordingTest {
         JSONRecording r = new JSONRecording("abc", request, true);
 
         FormattingTuple tp1 = MessageFormatter.arrayFormat("{} is going", new Object[]{"Jack"});
-        r.log(Level.INFO, "foo", tp1);
-        r.log(Level.WARN, "foo.bar", MessageFormatter.arrayFormat("Jill is going", null));
-        r.log(Level.ERROR, "foo.bar",
+        r.log(tc, Level.INFO, "foo", tp1);
+        r.log(tc, Level.WARN, "foo.bar", MessageFormatter.arrayFormat("Jill is going", null));
+        r.log(tc, Level.ERROR, "foo.bar",
                 MessageFormatter.arrayFormat("Jack and {} is going", new Object[]{"Jill" , new Exception()}));
 
         r.done();

Modified: sling/trunk/contrib/extensions/tracer/src/test/java/org/apache/sling/tracer/internal/LogTracerModelTest.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/tracer/src/test/java/org/apache/sling/tracer/internal/LogTracerModelTest.java?rev=1729650&r1=1729649&r2=1729650&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/tracer/src/test/java/org/apache/sling/tracer/internal/LogTracerModelTest.java (original)
+++ sling/trunk/contrib/extensions/tracer/src/test/java/org/apache/sling/tracer/internal/LogTracerModelTest.java Wed Feb 10 16:45:25 2016
@@ -24,9 +24,8 @@ import ch.qos.logback.classic.Level;
 import org.junit.Test;
 
 import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.assertNull;
 
 public class LogTracerModelTest {
 
@@ -56,9 +55,9 @@ public class LogTracerModelTest {
         TracerSet ts = new TracerSet("foo : a.b;level=trace, a.b.c;level=info");
         TracerContext tc = getContext(ts);
 
-        assertTrue(tc.shouldLog("a.b", Level.TRACE));
-        assertTrue(tc.shouldLog("a.b.d", Level.TRACE));
-        assertFalse(tc.shouldLog("a.b.c", Level.TRACE));
+        assertNotNull(tc.findMatchingConfig("a.b", Level.TRACE));
+        assertNotNull(tc.findMatchingConfig("a.b.d", Level.TRACE));
+        assertNull(tc.findMatchingConfig("a.b.c", Level.TRACE));
     }
 
     @Test