df1-0.3: lib/Df1.hs
-- | This module exports tools for typing, parsing, and rendering logs in the
-- /df1/ hierarchical structured logging format.
--
-- Consider this a preview release: The API is likely to stay stable, but
-- extensive testing, formalization and tooling is due.
--
-- Draft [BNF](https://en.wikipedia.org/wiki/Backus%E2%80%93Naur_form)
-- specification of the /df1/ log line format (TO BE VERIFIED):
--
-- > <log> ::= <timestamp> " " <path> " " <level> " " <message>
-- > <path> ::= <path1> " " <path> | <path1> | ""
-- > <path1> ::= "/" <segment> | <key> "=" <value>
-- > <segment> ::= zero or more characters until " "
-- > <key> ::= zero or more characters until (" " | "=")
-- > <value> ::= zero or more characters until " "
-- > <message> ::= zero or more characters until LF ("\n")
-- > <level> ::= "DEBUG" | "INFO" | "NOTICE" | "WARNING" | "ERROR" | "CRITICAL" | "ALERT" | "EMERGENCY"
-- > <timestamp> ::= <year> "-" <month> "-" <day> "T" <hour> ":" <minute> ":" <second> "." <nanosecond> "Z"
-- > <year> ::= <digit> <digit> <digit> <digit>
-- > <month> ::= <digit> <digit>
-- > <day> ::= <digit> <digit>
-- > <hour> ::= <digit> <digit>
-- > <minute> ::= <digit> <digit>
-- > <second> ::= <digit> <digit>
-- > <nanosecond> ::= <digit> <digit> <digit> <digit> <digit> <digit> <digit> <digit> <digit>
-- > <digit> ::= "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9"
module Df1
( -- * Types
T.Log(Log, log_time, log_level, log_path, log_message)
, T.Level(Debug, Info, Notice, Warning, Error, Critical, Alert, Emergency)
, T.Path(Attr, Push)
, T.Segment, T.unSegment, T.ToSegment(segment)
, T.Key, T.unKey, T.ToKey(key)
, T.Value, T.unValue, T.ToValue(value)
, T.Message, T.unMessage, T.ToMessage(message)
-- * Parsing
, P.parse
-- * Rendering
, R.render
, R.renderColor
) where
import qualified Df1.Parse as P
import qualified Df1.Render as R
import qualified Df1.Types as T