package easy_logging

  1. Overview
  2. Docs
Module to log messages. Aimed at being both powerful and easy to use


Dune Dependency






Logging infrastructure inspired by the Python logging module. The aim of this module is to provide a quick and easy to use logging infrastructure.

It has the following features :

  • one line logger creation
  • log messages printf style, or [string] or [string lazy_t]
  • tree logging architecture for light configuration
  • handlers associated to each logger will format, filter and treat the message independantly.
  • use the infrastructure with your own handlers with the [MakeLogging] functor.
  • use tags to add contextual information to log messages

Published: 01 Aug 2021


Logging module for OCaml.

Quick start :

open Easy_logging
logger = Logging.make_logger "my_logger" Debug [Cli Debug];;
logger#info "log_message";;

See documentation at


Version 0.8.2

  • fix license in source code files (Mozilla Public License Version 2.0)

Version 0.8.1

  • General cleanup

  • Some refactoring (removed MakeLogging functor)

  • Relax ppx_deriving dependency requirements.

  • Switch to Mozilla Public License 2.0

  • Minimal version of OCaml is not 4.07

Version 0.7

  • added tree_to_yojson function

  • added level_of_string to Logging

  • logger level is no more option type (NoLevel takes the role of None)

  • fix json formatter

Version 0.6

  • Added more options to file handlers (automatic timestamps and/or versioning of file names)

  • Added CliErr handler to output to stderr

  • modified handlers type so that fully custom handlers can be instantiated

  • cleaned module API

  • log items contains a timestamp

Version 0.6.2
  • Added RotatingFile handlers : log file rotation based on file size

Version 0.5

  • Renamed the Default_handlers module to handlers

  • tag type in Handlers is now string (was unit)

  • added the possibility to add filters to handlers

  • added tag_generator feature to loggers, to automatically add tags to all messages passed to a logger

version 0.5.1
  • log_level type is direcly accessible from Easy_logging and Easy_logging_yojson modules

version 0.5.2
  • more file_handler options (timestamp, versioning)

Version 0.4

  • printf style logging is now the default

  • simplifed configuration in case of multiple loggers (and closer to the python module) : the loggers form a tree (based on their name, dots indicating descendence)

    • log items are passed to the handlers of a logger’s ancestors (so that few handlers need initialisation) (possible to override)

    • loggers inherit the level of their ancestor if not set explicitely

  • an additional package easy_logging_yojson provides initialisation of loggers from the json format (with ppx_deriving_yojson), so that configuration can be fully done outside the code.

Dependencies (3)

  1. calendar >= "2.0"
  2. dune >= "1.8"
  3. ocaml >= "4.07.0"

Dev Dependencies


Used by (3)

  1. commons
  2. easy_logging_yojson >= "0.8.2"
  3. little_logger < "0.3.0"




Innovation. Community. Security.