Type, render and parse the df1 hierarchical structured log format


Version on this page:0.4.1
LTS Haskell 22.29:0.4.3
Stackage Nightly 2024-07-20:0.4.3
Latest on Hackage:0.4.3

See all snapshots df1 appears in

BSD-3-Clause licensed by Renzo Carbonara
Maintained by renλren.zone
This version can be pinned in stack with:df1-0.4.1@sha256:aa8e84ac9e2492f022de0841c840cd5a53d356377ff8eadfb8ea91e5c3c72169,1104

Module documentation for 0.4.1

Used by 2 packages in lts-20.26(full list with versions):


Hierarchical structured logging format. Easy for humans, fast for computers.

This library provides types, parsers and renderers for df1.

Consider this a preview release: The API is likely to stay stable, but extensive testing, formalization and tooling is due.

Build Status

See the BSD3 LICENSE file to learn about the legal terms and conditions for this library.


Version 0.4.1

  • Add ToPath, path.

  • Add ToValue instances for base’s Char, Fixed; for time’s SystemTime, UTCTime, CalendarDiffDays, CalendarDiffTime, Day, TimeZone, TimeOfDay, LocalTime, ZonedTime, NominalDiffTime, DiffTime, DayOfWeek.

  • Add ToSegment instances for base’s Char.

  • Add ToKey instances for base’s Char.

  • Add Read instance for Level.

Version 0.4

  • COMPILER ASSISTED BREAKING CHANGE: Change functions names Df1.render to Df1.Render.log, Df1.renderColor to Df1.Render.logColorANSI, and Df1.parse to Df1.Parse.log.

  • Exported key, message, iso8601, segment and value from module Df1.Render.

Version 0.3.2

  • Added ToValue instances for common types like Int, Bool, etc.

  • Changed colours in Log rendering.

Version 0.3.1

  • Added missing language pragma.

Version 0.3

  • The segment, key, value and message functions are now methods of the new ToSegment, ToKey, ToValue and ToMessage classes. Identity instances, as well as instances for String, lazy Text and strict Text, have been introduced for these classes.

Version 0.2

  • BREAKING CHANGE: Segment, Key, Value and Message don’t strip surrounding whitespace anymore. When rendering Segment, Key and Value, the whitespace will be percent-encoded. When rendering Message, the whitespace will be kept as is.

  • BREAKING CHANGE: Segment and Key now wrap lazy Text, rather than strict Text. This is to align their APIs with Value and Message, which already wrapped lazy Text so as to prevent logged Values and Messages from to use much memory. It’s unlikely that Segments and Keys are affected by this, since in practice they are almost always created statically. So, this change is mostly to make the API less surprising to users: Lazy Text is used throughout.

  • Added draft BNF specification.

Version 0.1.2

  • Fixed escaping of control characters in Message.

  • Percent-escape less punctuation characters when rendering Key, Segment and Value.

    TODO: write spec.

Version 0.1.1

  • Fixed compilation.

Version 0.1

  • Consider this a preview release: The API is likely to stay stable, but extensive testing, formalization and tooling is due.