Uploaded image for project: 'Sling'
  1. Sling
  2. SLING-5459

Recording of tracer logs

    XMLWordPrintableJSON

Details

    • New Feature
    • Status: Closed
    • Major
    • Resolution: Fixed
    • None
    • Log Tracer 1.0.0
    • Extensions
    • None

    Description

      Sling Log Tracer currently provides support for fine grained control of enabling logs for specific request. To make this log more accessible it would be useful to have a feature where the client can also fetch the logs from specific request over HTTP.

      This feature would work like below

      1. Client sends an HTTP request with header Sling-Tracer-Record​ set to true
        curl -D - -u admin:admin \
          -H "Sling-Tracer-Record : true" \
         -d "./jcr:content/jcr:title=Summer Collection" \
         -d ":name=summer-collection" \
         -d "./jcr:primaryType=sling:Folder" \
         -d "./jcr:content/jcr:primaryType=nt:unstructured" \
         -d "tracers=oak-writes" \
         http://localhost:4802/content/dam/
        
      2. Server includes a request id as part of Sling-Tracer-Request-Id response headers
        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 like http://localhost:4802/system/console/tracer/9b5b01f6-f269-47c3-a889-2dc8d4d7938f.json (see attached output. it includes following data for now. It can be extended as per need
        1. RequestProgressTracker logs
        2. JCR Queries made

      Key points

      1. Request id is randomly generated
      2. The access to request log is via Web Console Plugin servlet hence its only accessible to admin user account
      3. The request data would only be recorded for those request which have the ​Sling-Tracer-Record header set. The data would be kept in memory for some time with the assumption that client would fetch it soon. After some time the data would expire
      4. This feature would need to explicitly enabled via config option
      5. The feature is somewhat similar to 'Recent Request' support. However it exposes a JSON rendition and only keeps the data for request where client requested that.
      6. For this feature dependency is added for Guava Cache to make use of space bound/expiring cache. We can to an extent use LinkedHashMap but given that Guava is now being used in Sling for Oak it makes sense to make use of its feature. If required can look into embedding minimum required set

      Attachments

        1. tracer-recording.json
          4 kB
          Chetan Mehrotra
        2. SLING-5459-v1.patch
          40 kB
          Chetan Mehrotra
        There are no Sub-Tasks for this issue.

        Activity

          People

            chetanm Chetan Mehrotra
            chetanm Chetan Mehrotra
            Votes:
            2 Vote for this issue
            Watchers:
            4 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: