Haskell Language Logging Logging with hslogger


The hslogger module provides a similar API to Python's logging framework, and supports hierarchically named loggers, levels and redirection to handles outside of stdout and stderr.

By default, all messages of level WARNING and above are sent to stderr and all other log levels are ignored.

import           System.Log.Logger (Priority (DEBUG), debugM, infoM, setLevel,
                                    updateGlobalLogger, warningM)

main = do
  debugM "MyProgram.main" "This won't be seen"
  infoM "MyProgram.main" "This won't be seen either"
  warningM "MyProgram.main" "This will be seen"

We can set the level of a logger by its name using updateGlobalLogger:

  updateGlobalLogger "MyProgram.main" (setLevel DEBUG)

  debugM "MyProgram.main" "This will now be seen"

Each Logger has a name, and they are arranged hierarchically, so MyProgram is a parent of MyParent.Module.