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