Use module-level loggers so that implementers can configure the logging in more granular ways.
The logging module when used directly defaults to the root logger, which while easy to use, does not allow for much control for printing/silencing different modules logging output when on larger projects.
Using the standard of instantiating a logger using the module name still keeps logging usage simple, while adding better control, and also helps to show where specific messages are being generated from.
Also the log_level parameter is removed from the app initialization, since this is automatically provided by the logging module (users can configure the root module or any named module anywhere before starting the app). A good place for that would be in a settings part of the client app.
Use module-level loggers so that implementers can configure the logging in more granular ways.
The logging module when used directly defaults to the
root
logger, which while easy to use, does not allow for much control for printing/silencing different modules logging output when on larger projects.Using the standard of instantiating a logger using the module name still keeps logging usage simple, while adding better control, and also helps to show where specific messages are being generated from.
Also the
log_level
parameter is removed from the app initialization, since this is automatically provided by the logging module (users can configure the root module or any named module anywhere before starting the app). A good place for that would be in a settings part of the client app.