Logging in Haskell is achieved usually through functions in the
IO monad, and so is limited to non-pure functions or "IO actions".
There are several ways to log information in a Haskell program: from
hslogger module provides a similar API to Python's
logging framework, and supports hierarchically named loggers, levels and redirection to handles outside of
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 "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