Note that now all five messages were output, so the default level that the root logger logs is now “DEBUG.” The log record attributes (such as
%(asctime)s) that can be used to format the output can be found in the logging documentation.
Although there is a default logger, we usually want to make and use other loggers that can be configured separately. This is because we may want a different severity level or format for different loggers.
Next on the todo list is to implement the Reader monad to hide that logging deeper in your code base so that you a) don’t need to see logging code everywhere, and b) don’t forget to include logging in some function.