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/10/08 10:07:21 UTC

svn commit: r1763884 - /sling/trunk/contrib/extensions/tracer/src/main/java/org/apache/sling/tracer/internal/JSONRecording.java

Author: chetanm
Date: Sat Oct  8 10:07:21 2016
New Revision: 1763884

URL: http://svn.apache.org/viewvc?rev=1763884&view=rev
Log:
SLING-6119 - Log parameters not captured correctly in few cases

Modified:
    sling/trunk/contrib/extensions/tracer/src/main/java/org/apache/sling/tracer/internal/JSONRecording.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=1763884&r1=1763883&r2=1763884&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 Sat Oct  8 10:07:21 2016
@@ -241,6 +241,7 @@ class JSONRecording implements Recording
         final Level level;
         final String logger;
         final FormattingTuple tuple;
+        final String[] params;
         final long timestamp = System.currentTimeMillis();
         final List<StackTraceElement> caller;
 
@@ -248,6 +249,7 @@ class JSONRecording implements Recording
             this.level = level != null ? level : Level.INFO;
             this.logger = logger;
             this.tuple = tuple;
+            this.params = getParams(tuple);
             this.caller = getCallerData(tc);
         }
 
@@ -258,6 +260,20 @@ class JSONRecording implements Recording
             return Collections.emptyList();
         }
 
+        private static String[] getParams(FormattingTuple tuple) {
+            //Eagerly convert arg to string so that if arg is bound by context like
+            //session then it gets evaluated when that is valid i.e. at time of call itself
+            Object[] params = tuple.getArgArray();
+            String[] strParams = null;
+            if (params != null){
+                strParams = new String[params.length];
+                for (int i = 0; i < params.length; i++) {
+                    strParams[i] = toString(params[i]);
+                }
+            }
+            return strParams;
+        }
+
         private static String toString(Object o) {
             //Make use of Slf4j null safe toString support!
             return MessageFormatter.format("{}", o).getMessage();
@@ -276,12 +292,11 @@ class JSONRecording implements Recording
             jw.key("logger").value(logger);
             jw.key("message").value(tuple.getMessage());
 
-            Object[] params = tuple.getArgArray();
             if (params != null) {
                 jw.key("params");
                 jw.array();
-                for (Object o : params) {
-                    jw.value(toString(o));
+                for (String o : params) {
+                    jw.value(o);
                 }
                 jw.endArray();
             }