[Python-ideas] Logging Levels

Mike Miller python-ideas at mgmiller.net
Tue Nov 28 14:25:35 EST 2017


I use the logging module extensively for even the simplest scripts, one of the 
reasons there's been less difficulty moving to Python 3 at work.  One of the 
"nano features" I've often added to its config is the addition of a custom log 
level.  Never mentioned it before because of its triviality and minor use cases, 
but just realized that I've been doing it five years now and happy with it, so 
why not?

NOTE (~35)

It is called the "note" level and used when one needs to express something 
important, yet positive, and have it be output by default.  The standard levels 
don't support this currently, you often have to potentially scare the end user 
with a warning or higher to have a message emitted.

Typically I use it to return important information that was asked for 
specifically and retrieved successfully, e.g.:

     log.note('Your token is: %s', token)
     log.note(f'⏵ {item.id} {item.name}')

There are other examples.  Sphinx, has the concept of note admonitions for docs 
in addition to warning and danger.  Bootstrap has note banners for web/apps. 
There is something important to express or highlight, but nothing to worry about.


Can't find it now, but believe the docs in the past stated that CRITICAL was 
meant for *unrecoverable* errors.  I've never had a project where I didn't shut 
down immediately after such an occurrence.   Therefore I find "FATAL" a more 
accurate description of what happened.  Log4j and other industry loggers use 
this level name as well.

There is also an aesthetic reason to prefer "fatal".  It is shorter and so 
aligns better with other level names for readability, e.g.:

     console_format = '  %(levelname)-7.7s %(message)s'

Tried but never found a good abbreviation for critical, unfortunately.  The 
other option is to add length to align the field.  Most messages use the shorter 
level names (debug, info) so extra length results in wasted space that is very 
rarely needed.

Hopefully someone else finds these useful.  Neither depends on the other.


More information about the Python-ideas mailing list