This is an automated email from the ASF dual-hosted git repository. rombert pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-tracer.git
commit a36c84b00a3d528d539befcbc69cc3b954d54f9f Author: Chetan Mehrotra <[email protected]> AuthorDate: Wed Feb 10 16:45:25 2016 +0000 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 git-svn-id: https://svn.apache.org/repos/asf/sling/trunk@1729650 13f79535-47bb-0310-9956-ffa450edef68 --- .../org/apache/sling/tracer/internal/JSONRecording.java | 2 +- .../java/org/apache/sling/tracer/internal/LogTracer.java | 5 +++-- .../java/org/apache/sling/tracer/internal/Recording.java | 4 ++-- .../org/apache/sling/tracer/internal/TracerContext.java | 16 ++++++++++------ .../apache/sling/tracer/internal/JSONRecordingTest.java | 12 +++++++----- .../apache/sling/tracer/internal/LogTracerModelTest.java | 9 ++++----- 6 files changed, 27 insertions(+), 21 deletions(-) diff --git a/src/main/java/org/apache/sling/tracer/internal/JSONRecording.java b/src/main/java/org/apache/sling/tracer/internal/JSONRecording.java index f8f785e..b1e76be 100644 --- a/src/main/java/org/apache/sling/tracer/internal/JSONRecording.java +++ b/src/main/java/org/apache/sling/tracer/internal/JSONRecording.java @@ -116,7 +116,7 @@ class JSONRecording implements Recording, Comparable<JSONRecording> { //~---------------------------------------< 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) { diff --git a/src/main/java/org/apache/sling/tracer/internal/LogTracer.java b/src/main/java/org/apache/sling/tracer/internal/LogTracer.java index 3cb42d7..ea531ba 100644 --- a/src/main/java/org/apache/sling/tracer/internal/LogTracer.java +++ b/src/main/java/org/apache/sling/tracer/internal/LogTracer.java @@ -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; } } diff --git a/src/main/java/org/apache/sling/tracer/internal/Recording.java b/src/main/java/org/apache/sling/tracer/internal/Recording.java index 9e0f88e..e7300c5 100644 --- a/src/main/java/org/apache/sling/tracer/internal/Recording.java +++ b/src/main/java/org/apache/sling/tracer/internal/Recording.java @@ -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 diff --git a/src/main/java/org/apache/sling/tracer/internal/TracerContext.java b/src/main/java/org/apache/sling/tracer/internal/TracerContext.java index bd12def..5859bce 100644 --- a/src/main/java/org/apache/sling/tracer/internal/TracerContext.java +++ b/src/main/java/org/apache/sling/tracer/internal/TracerContext.java @@ -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; } diff --git a/src/test/java/org/apache/sling/tracer/internal/JSONRecordingTest.java b/src/test/java/org/apache/sling/tracer/internal/JSONRecordingTest.java index 65041f8..ac8ad3c 100644 --- a/src/test/java/org/apache/sling/tracer/internal/JSONRecordingTest.java +++ b/src/test/java/org/apache/sling/tracer/internal/JSONRecordingTest.java @@ -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(); diff --git a/src/test/java/org/apache/sling/tracer/internal/LogTracerModelTest.java b/src/test/java/org/apache/sling/tracer/internal/LogTracerModelTest.java index 2b1d7c0..96c0bad 100644 --- a/src/test/java/org/apache/sling/tracer/internal/LogTracerModelTest.java +++ b/src/test/java/org/apache/sling/tracer/internal/LogTracerModelTest.java @@ -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 -- To stop receiving notification emails like this one, please contact "[email protected]" <[email protected]>.
