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">¶</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> "<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>" <span class="o">\</span>
+ <span class="o">-</span><span class="n">d</span> "<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>" <span class="o">\</span>
+ <span class="o">-</span><span class="n">d</span> "<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>" <span class="o">\</span>
+ <span class="o">-</span><span class="n">d</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">sling</span><span class="p">:</span><span class="n">Folder</span>" <span class="o">\</span>
+ <span class="o">-</span><span class="n">d</span> "<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>" <span class="o">\</span>
+ <span class="o">-</span><span class="n">d</span> "<span class="n">tracers</span><span class="p">=</span><span class="n">oak</span><span class="o">-</span><span class="n">writes</span>" <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">¶</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"><dependency></span>
@@ -272,7 +351,7 @@ and route them to normal logging on serv
<span class="nt"></dependency></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.