logging.basicConfig(force=False) on empty handler list never initializes Formatter and Handler
Aiming to add minimalistic logging capabilities soon within starting phase of a micropythion program, one would call:
#minimalistic
logging.basicConfig(stream=stream.sys level=logging.DEBUG)
logger = logging.getLogger('thelog')
Aiming to get a fancy timestamp and information ordering, the call could look like:
# explicit formatting
log_fmt_mipy = "%(name)s - %(levelname)s - %(message)s"
log_fmt_dat_mipy = "%(asctime)s.%(msecs)03d"
logging.basicConfig(stream=stream.sys level=logging.DEBUG)
logger = logging.getLogger('thelog')
The Object "logger" as Logger instance on either case will NEVER get a working Handler and Formatter upon initialization. This is because logging.basicConfig() in (current) line 235 evaluates the list object Logger.handlers instead of the integer number Logger.hasHandlers().
NOTE: Initialization of a date format of type "asctime" within micropython, as shown in the code above, is not (yet) supported (by design) and thus requires explicit implementation efforts.
logging: Add `handler` param to `basicConfig`.
CPython allows specifying a list of handlers in the initialization of logging with basicConfig(handlers=<iterable>). This adds similar support but only with a single handler. It allows to initialize logging with a single, specialized handler.
It seems like a small step to just support
handlersthen, such that the code should remains compatible with CPython?I could do that, yeah. My thought was that for an MCU more than one handler is unlikely, but I agree that compatibility means that everyone feels more comfortable using Micropython.
I agree that handlers = [] is simpler to learn ,
it also means that adding
Logger.addHandler() makes more sense.