This is an automated email from the ASF dual-hosted git repository. rombert pushed a commit to annotated tag org.apache.sling.tracer-1.0.0 in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-tracer.git
commit 80bc14894a73d281be5ce682944f4e31a3cd53bb Author: Chetan Mehrotra <[email protected]> AuthorDate: Wed Feb 10 05:52:31 2016 +0000 SLING-5459 - Recording of tracer logs Refactor to pass on the FormattingTuple so as to allow separate rendering of the logs in recording git-svn-id: https://svn.apache.org/repos/asf/sling/trunk/contrib/extensions/tracer@1729530 13f79535-47bb-0310-9956-ffa450edef68 --- .../sling/tracer/internal/JSONRecording.java | 4 +++- .../apache/sling/tracer/internal/Recording.java | 5 ++-- .../sling/tracer/internal/TracerContext.java | 28 ++++++++++++++-------- .../sling/tracer/internal/JSONRecordingTest.java | 5 ++-- 4 files changed, 27 insertions(+), 15 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 0b103bd..8980ff9 100644 --- a/src/main/java/org/apache/sling/tracer/internal/JSONRecording.java +++ b/src/main/java/org/apache/sling/tracer/internal/JSONRecording.java @@ -34,6 +34,7 @@ import org.apache.sling.commons.json.JSONException; import org.apache.sling.commons.json.io.JSONWriter; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.slf4j.helpers.FormattingTuple; class JSONRecording implements Recording { private static final Logger log = LoggerFactory.getLogger(JSONRecording.class); @@ -59,7 +60,8 @@ class JSONRecording implements Recording { //~---------------------------------------< Recording > @Override - public void log(Level level, String logger, String format, Object[] params) { + public void log(Level level, String logger, FormattingTuple tuple) { + Object[] params = tuple.getArgArray(); if (TracerContext.QUERY_LOGGER.equals(logger) && params != null && params.length == 2) { queries.add((String) params[1]); 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 7e24f14..d915474 100644 --- a/src/main/java/org/apache/sling/tracer/internal/Recording.java +++ b/src/main/java/org/apache/sling/tracer/internal/Recording.java @@ -21,11 +21,12 @@ package org.apache.sling.tracer.internal; import ch.qos.logback.classic.Level; import org.apache.sling.api.request.RequestProgressTracker; +import org.slf4j.helpers.FormattingTuple; interface Recording { Recording NOOP = new Recording() { @Override - public void log(Level level, String logger, String format, Object[] params) { + public void log(Level level, String logger, FormattingTuple tuple) { } @@ -40,7 +41,7 @@ interface Recording { } }; - void log(Level level, String logger, String format, Object[] params); + void log(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 4931255..47615e9 100644 --- a/src/main/java/org/apache/sling/tracer/internal/TracerContext.java +++ b/src/main/java/org/apache/sling/tracer/internal/TracerContext.java @@ -24,6 +24,7 @@ import java.util.Arrays; import ch.qos.logback.classic.Level; import ch.qos.logback.core.helpers.CyclicBuffer; import org.apache.sling.api.request.RequestProgressTracker; +import org.slf4j.helpers.FormattingTuple; import org.slf4j.helpers.MessageFormatter; class TracerContext { @@ -81,12 +82,19 @@ class TracerContext { } public boolean log(Level level, String logger, String format, Object[] params) { - recording.log(level, logger, format, params); + FormattingTuple tuple; + if (QUERY_LOGGER.equals(logger) && params != null && params.length == 2) { - return logQuery((String) params[1]); + tuple = logQuery((String) params[1]); + } else { + tuple = logWithLoggerName(logger, format, params); + } + + if (tuple != null) { + recording.log(level, logger, tuple); } - return logWithLoggerName(logger, format, params); + return tuple != null; } public void done() { @@ -109,8 +117,9 @@ class TracerContext { } } - private boolean logWithLoggerName(String loggerName, String format, Object... params) { - String msg = MessageFormatter.arrayFormat(format, params).getMessage(); + private FormattingTuple logWithLoggerName(String loggerName, String format, Object... params) { + FormattingTuple tuple = MessageFormatter.arrayFormat(format, params); + String msg = tuple.getMessage(); msg = "[" + loggerName + "] " + msg; if (progressTracker == null) { if (buffer == null) { @@ -120,16 +129,15 @@ class TracerContext { } else { progressTracker.log(msg); } - return true; + return tuple; } - private boolean logQuery(String query) { + private FormattingTuple logQuery(String query) { if (ignorableQuery(query)) { - return false; + return null; } queryCount++; - logWithLoggerName("JCR", " Query {}", query); - return true; + return logWithLoggerName("JCR", " Query {}", query); } private boolean ignorableQuery(String msg) { 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 f7c1736..159555e 100644 --- a/src/test/java/org/apache/sling/tracer/internal/JSONRecordingTest.java +++ b/src/test/java/org/apache/sling/tracer/internal/JSONRecordingTest.java @@ -26,6 +26,7 @@ import javax.servlet.http.HttpServletRequest; import ch.qos.logback.classic.Level; import org.apache.sling.commons.json.JSONObject; import org.junit.Test; +import org.slf4j.helpers.MessageFormatter; import static org.junit.Assert.assertEquals; import static org.mockito.Mockito.mock; @@ -41,8 +42,8 @@ public class JSONRecordingTest { when(request.getMethod()).thenReturn("GET"); JSONRecording r = new JSONRecording("abc", request); - r.log(Level.INFO, TracerContext.QUERY_LOGGER, "foo bar", new Object[]{"x" , "y"}); - r.log(Level.INFO, TracerContext.QUERY_LOGGER, "foo bar", new Object[]{"x" , "z"}); + 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.done(); r.render(sw); -- To stop receiving notification emails like this one, please contact "[email protected]" <[email protected]>.
