[Json] JSON Log file encoding JSON-L

Phillip Hallam-Baker <hallam@gmail.com> Tue, 06 May 2014 03:40 UTC

Return-Path: <hallam@gmail.com>
X-Original-To: json@ietfa.amsl.com
Delivered-To: json@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 710A01A06BC for <json@ietfa.amsl.com>; Mon, 5 May 2014 20:40:03 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2
X-Spam-Level:
X-Spam-Status: No, score=-2 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, FREEMAIL_FROM=0.001, SPF_PASS=-0.001] autolearn=ham
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id Cp5WF2qrbraR for <json@ietfa.amsl.com>; Mon, 5 May 2014 20:40:02 -0700 (PDT)
Received: from mail-lb0-x22c.google.com (mail-lb0-x22c.google.com [IPv6:2a00:1450:4010:c04::22c]) by ietfa.amsl.com (Postfix) with ESMTP id D220E1A06B8 for <json@ietf.org>; Mon, 5 May 2014 20:40:01 -0700 (PDT)
Received: by mail-lb0-f172.google.com with SMTP id l4so2197446lbv.17 for <json@ietf.org>; Mon, 05 May 2014 20:39:57 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:date:message-id:subject:from:to:content-type; bh=30z1hzT1H1V7H+qFrUVnk/q9ZHGPr+OmB+DV8fIQ0kM=; b=rcfMiZ/KObOv8wTN1fFWjHekkxCC8Q4gq1cZBhAJiRhQPxgmmVONzY+hkcBWWYQAX0 UMFcIlp5BYCkA1xMv5HaCJz9xdn8zLqfQs3l5KacIfeTRDmUfNfYrsmAJwFx62wXp35N I7U2STh8Y7B4AsLo354u+6oYAPQD5Y5Eqi37bxv4pgghgjSVZN72llemGauOrq0doK80 ej2NDDPPX+jZgQJVGvm8v+CoeJ/uShFFOgC0C1jvlXmTXaASKPned8xpZT3B6pgJhN4J eaoy4/31n8ti3O2CnXosWnkHaSwRTQjjeIB/3xJm9pWecaGEddb8HspUcvaOjLPuY+y6 eM6g==
MIME-Version: 1.0
X-Received: by 10.112.154.102 with SMTP id vn6mr168682lbb.55.1399347597549; Mon, 05 May 2014 20:39:57 -0700 (PDT)
Received: by 10.112.234.229 with HTTP; Mon, 5 May 2014 20:39:57 -0700 (PDT)
Date: Mon, 05 May 2014 23:39:57 -0400
Message-ID: <CAMm+LwjB-51z4GoeC0riehmJg1HAddmLAyfMsVOCVM80i=RiMA@mail.gmail.com>
From: Phillip Hallam-Baker <hallam@gmail.com>
To: JSON WG <json@ietf.org>
Content-Type: text/plain; charset="UTF-8"
Archived-At: http://mailarchive.ietf.org/arch/msg/json/UI1IGPWdDI9G4Az_1D1e10CQzh0
Subject: [Json] JSON Log file encoding JSON-L
X-BeenThere: json@ietf.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: "JavaScript Object Notation \(JSON\) WG mailing list" <json.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/json>, <mailto:json-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/json/>
List-Post: <mailto:json@ietf.org>
List-Help: <mailto:json-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/json>, <mailto:json-request@ietf.org?subject=subscribe>
X-List-Received-Date: Tue, 06 May 2014 03:40:03 -0000

This encoding is based on JSON but for reasons explained in the draft
is not pure JSON. Instead a JSON log is a sequence of JSON objects
separated by newline characters.

There is clearly a need for a way to use JSON in log files. It would
be better to have one than many ways. So probably the best next steps
would be for people to try it and then go for an independent
submission for a MIME type unless people want to do something more
formal.

This scheme does not address the other major use case raised which is
writing configuration files. Configuration files need comments. I
think that is a totally different use case to log files though.


http://datatracker.ietf.org/doc/draft-hallambaker-jsonl/

The spec itself is pretty short.


3. Specification

   A JSON-L log file consists of a sequence of zero or more JSON objects
   as specified in [RFC7159] separated by white space that includes at
   least one newline character.


           JSON-L-text = *(object x-ws)

           x-ws = *ws %x0A *ws


3.1. Resynchronization

   Since control characters are not permitted inside JSON string values
   and JSON objects MUST be separated by commas inside a JSON array, the
   sequence '}' *ws LF *ws '{' can only occur at the end of one log
   entry and the start of the next:'


           Boundary = end-object x-ws begin-object


Not got round to a security considerations yet.
-- 
Website: http://hallambaker.com/