Skip to main content

python logging on steroids, lightweight and convenient

Project description

nanolog

Life is too short. Use nanolog to make logging and printing simpler!

nanolog features a convenient logger API built on top of python’s builtin logging.

The library also ships with many printing utilities. Python 3 only.

Installation

From stable package on PyPI

pip install nanolog

From bleeding edge master branch

pip install git+git://github.com/SurrealAI/nanolog.git

nanolog.Logger

Logging levels, from least severe to most:

  • LOG_ALL: log everything
  • TRACE: fine-grained debugging messages
  • DEBUG: normal debugging
  • INFO: messages you usually don’t want to see
  • NOTICE (i.e. INFO5): non-error messages you usually want to see
  • WARNING: exceptional circumstances that might not be errors
  • ERROR: errors that occur, but are anticipated and handled
  • CRITICAL: fatal errors that lead to termination
  • LOG_OFF: turn off all logging
import nanolog as nl

logger = nl.Logger.create_logger(
    'main',
    stream='out',
    level='debug',
)

logger.info('my', 3, 'world', 1/16.)  # just like print
# >>> my 3 world 0.0625

# nanolog use 'warn' instead of 'warning'
logger.warnfmt('{}, we are {:.3f} miles from {planet}',
               'Houston', 17/7, planet='Mars')  # just like str.format
# >>> Houston, we are 2.429 miles from Mars

Use a trailing number to indicate level, the larger the higher priority

logger.info7(...)  # info level 7
logger.errorfmt8(...)  # error level 8

Display a banner line or block

logger.infobanner3('my', 3, 'world', symbol='!', banner_len=16, banner_lines=3)

prints:

!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!! my 3 world !!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!

Of course, banner method also comes with a str.format version

logger.debugbannerfmt(
    '{3}&{0}&{2}&{1}', 'a', 'b', 'c', 'd',
    symbol='<*_*>', banner_len=16, banner_lines=6
)

displays:

<*_*><*_*><*_*><*_*><*_*>
<*_*><*_*><*_*><*_*><*_*>
<*_*><*_ d&a&c&b <*_*><*_
<*_*><*_*><*_*><*_*><*_*>
<*_*><*_*><*_*><*_*><*_*>
<*_*><*_*><*_*><*_*><*_*>

Prettyprint support (uses the thirdparty lib prettyprinter)

logger.infopp7(...)
logger.warnppfmt('my warning {:.3f} format {:.2f} string', 1/7., 1/9.)

Logger config

TODO

Time formatting

TODO

Printing utililites

prettyprint

Better alternatives for the pprint module in python standard lib.

  • pprint: takes variable number of objects, just like print()
  • pprintstr: return string instead of printing to IO stream
  • pprintfmt: just like print('...'.format)
  • pprintfmtstr: return string instead of printing to IO stream

Convenient aliases (pp stands for prettyprint; a single p means normal print)

short original
pf printfmt
pferr printfmterr
pstr printstr
perr printerr
pp pprint
ppstr pprintstr
ppf pprintfmt
ppfstr pprintfmtstr

TODO: talk about global configs

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Filename, size & hash SHA256 hash help File type Python version Upload date
nanolog-0.1.3-py3-none-any.whl (17.5 kB) Copy SHA256 hash SHA256 Wheel py3
nanolog-0.1.3.tar.gz (16.1 kB) Copy SHA256 hash SHA256 Source None

Supported by

Elastic Elastic Search Pingdom Pingdom Monitoring Google Google BigQuery Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN SignalFx SignalFx Supporter DigiCert DigiCert EV certificate StatusPage StatusPage Status page