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

svn commit: r986564 - in /websites/staging/sling/trunk/content: ./ documentation/bundles/log-tracers.html documentation/bundles/tracer-config.png

Author: buildbot
Date: Mon Apr 25 09:02:08 2016
New Revision: 986564

Log:
Staging update by buildbot for sling

Modified:
    websites/staging/sling/trunk/content/   (props changed)
    websites/staging/sling/trunk/content/documentation/bundles/log-tracers.html
    websites/staging/sling/trunk/content/documentation/bundles/tracer-config.png

Propchange: websites/staging/sling/trunk/content/
------------------------------------------------------------------------------
--- cms:source-revision (original)
+++ cms:source-revision Mon Apr 25 09:02:08 2016
@@ -1 +1 @@
-1740769
+1740775

Modified: websites/staging/sling/trunk/content/documentation/bundles/log-tracers.html
==============================================================================
--- websites/staging/sling/trunk/content/documentation/bundles/log-tracers.html (original)
+++ websites/staging/sling/trunk/content/documentation/bundles/log-tracers.html Mon Apr 25 09:02:08 2016
@@ -263,6 +263,85 @@ and route them to normal logging on serv
 </pre></div>
 
 
+<h2 id="tracer-recording">Tracer Recording<a class="headerlink" href="#tracer-recording" title="Permanent link">&para;</a></h2>
+<p>Apart from routing the logs to the server logs they can also be stored in memory and accessed in
+json form from Felix Web Console. By default support for recording is disabled and it needs to be
+explicitly enabled via OSGi config</p>
+<p>Recording features works as explained below</p>
+<ol>
+<li>Client sends an HTTP request with header <code>Sling-Tracer-Record</code>​ set to <code>true</code><div class="codehilite"><pre><span class="n">curl</span> <span class="o">-</span><span class="n">D</span> <span class="o">-</span> <span class="o">-</span><span class="n">u</span> <span class="n">admin</span><span class="p">:</span><span class="n">admin</span> <span class="o">\</span>
+  <span class="o">-</span><span class="n">H</span> &quot;<span class="n">Sling</span><span class="o">-</span><span class="n">Tracer</span><span class="o">-</span><span class="n">Record</span> <span class="p">:</span> <span class="n">true</span>&quot; <span class="o">\</span>
+ <span class="o">-</span><span class="n">d</span> &quot;<span class="o">./</span><span class="n">jcr</span><span class="p">:</span><span class="n">content</span><span class="o">/</span><span class="n">jcr</span><span class="p">:</span><span class="n">title</span><span class="p">=</span><span class="n">Summer</span> <span class="n">Collection</span>&quot; <span class="o">\</span>
+ <span class="o">-</span><span class="n">d</span> &quot;<span class="p">:</span><span class="n">name</span><span class="p">=</span><span class="n">summer</span><span class="o">-</span><span class="n">collection</span>&quot; <span class="o">\</span>
+ <span class="o">-</span><span class="n">d</span> &quot;<span class="o">./</span><span class="n">jcr</span><span class="p">:</span><span class="n">primaryType</span><span class="p">=</span><span class="n">sling</span><span class="p">:</span><span class="n">Folder</span>&quot; <span class="o">\</span>
+ <span class="o">-</span><span class="n">d</span> &quot;<span class="o">./</span><span class="n">jcr</span><span class="p">:</span><span class="n">content</span><span class="o">/</span><span class="n">jcr</span><span class="p">:</span><span class="n">primaryType</span><span class="p">=</span><span class="n">nt</span><span class="p">:</span><span class="n">unstructured</span>&quot; <span class="o">\</span>
+ <span class="o">-</span><span class="n">d</span> &quot;<span class="n">tracers</span><span class="p">=</span><span class="n">oak</span><span class="o">-</span><span class="n">writes</span>&quot; <span class="o">\</span>
+ <span class="n">http</span><span class="p">:</span><span class="o">//</span><span class="n">localhost</span><span class="p">:</span>4802<span class="o">/</span><span class="n">content</span><span class="o">/</span><span class="n">dam</span><span class="o">/</span>
+</pre></div>
+
+
+<ol>
+<li>
+<p>Server includes a request id as part of <code>Sling-Tracer-Request-Id</code> response headers  </p>
+<p>HTTP/1.1 201 Created
+Date: Wed, 27 Jan 2016 07:30:22 GMT
+Sling-Tracer-Request-Id: 9b5b01f6-f269-47c3-a889-2dc8d4d7938f
+X-Content-Type-Options: nosniff
+X-Frame-Options: SAMEORIGIN
+Location: /content/dam/summer-collection
+Content-Type: text/html; charset=UTF-8
+Transfer-Encoding: chunked
+3. The logs in json format can then be fetched from server at <code>/system/console/tracer</code> like 
+   http://localhost:8080/system/console/tracer/9b5b01f6-f269-47c3-a889-2dc8d4d7938f.json. Below
+   is a json output for GET request</p>
+<p>curl -s -D - -H "Sling-Tracer-Record : true" -H "Sling-Tracers : oak-query" \
+-H "Sling-Tracer-Config : org.apache.jackrabbit.oak.query" \
+-u admin:admin http://localhost:4512/assets.html/content/dam -o /dev/null</p>
+<p>::javascript
+{
+  "method": "GET",
+  "time": 15140,
+  "timestamp": 1461574009024,
+  "requestProgressLogs": [
+    "0 TIMER_START{Request Processing}",
+    "0 COMMENT timer_end format is {<elapsed msec>,<timer name>} <optional message>",
+    ...
+  ],
+  "queries": [{
+    "query": "/jcr:root/etc/workflow/instances//element(<em>,app:Workflow)[@status='RUNNING'] order by @startTime descending",
+    "plan": "[app:Workflow] as [a] /</em> property status = RUNNING where ([a].[status] = 'RUNNING') and (isdescendantnode([a], [/etc/workflow/instances])) <em>/",
+    "caller": "com.example.WorkflowManager.getWorkflowInstances(WorkflowManager.java:902)"
+  }
+  ],
+  "logs": [{
+    "timestamp": 1461574022401,
+    "level": "DEBUG",
+    "logger": "org.apache.jackrabbit.oak.query.QueryEngineImpl",
+    "message": "Parsing xpath statement: /jcr:root/etc/workflow/instances//element(</em>,cq:Workflow)[@status='RUNNING'] order by @startTime descending",
+    "params": [
+      "xpath",
+      "/jcr:root/etc/workflow/instances//element(*,cq:Workflow)[@status='RUNNING'] order by @startTime descending"
+    ]
+  }
+    ...
+  ]
+}</p>
+</li>
+</ol>
+</li>
+</ol>
+<p>JSON output consist of following sections</p>
+<ol>
+<li><code>method</code> - Request method</li>
+<li><code>time</code> - Time in mills spent in request processing on server</li>
+<li><code>timestamp</code> - Request start time</li>
+<li><code>requestProgressLogs</code> - Sling Request Progress Tracker log for the given request</li>
+<li><code>queries</code> - List of queries fired along with details around <code>query</code>, <code>plan</code> and <code>caller</code> i.e. from where
+    the query is invoked</li>
+<li><code>logs</code> - List of log entries captured (as enabled by tracer config) for current request</li>
+</ol>
+<p>The recordings are held in memory for 15 mins (per default setting) and can be seen listed at http://localhost:8080/system/console/tracer. Look into the OSGi config for more config options
+around this.</p>
 <h2 id="installation">Installation<a class="headerlink" href="#installation" title="Permanent link">&para;</a></h2>
 <p>Download the bundle from <a href="http://sling.apache.org/downloads.cgi">here</a> or use following Maven dependency</p>
 <div class="codehilite"><pre><span class="nt">&lt;dependency&gt;</span>
@@ -272,7 +351,7 @@ and route them to normal logging on serv
 <span class="nt">&lt;/dependency&gt;</span>
 </pre></div>
       <div class="timestamp" style="margin-top: 30px; font-size: 80%; text-align: right;">
-        Rev. 1740765 by chetanm on Mon, 25 Apr 2016 07:03:26 +0000
+        Rev. 1740775 by chetanm on Mon, 25 Apr 2016 09:01:58 +0000
       </div>
       <div class="trademarkFooter"> 
         Apache Sling, Sling, Apache, the Apache feather logo, and the Apache Sling project

Modified: websites/staging/sling/trunk/content/documentation/bundles/tracer-config.png
==============================================================================
Binary files - no diff available.