seed-papertrail

This is the seed-papertrail project.


Keywords
seed, papertrail
License
BSD-3-Clause
Install
pip install seed-papertrail==1.5.0

Documentation

seed-papertrail

Code Coverage seed-papertrail Docs

Some utilities to time things and log things.

>>> import logging
>>> formatter = logging.Formatter("%(asctime)s [%(threadName)-12.12s] [%(levelname)-5.5s]  %(message)s")
>>> logger = logging.getLogger('papertrail')
>>> consoleHandler = logging.StreamHandler()
>>> consoleHandler.setFormatter(formatter)
>>> logger.addHandler(consoleHandler)
>>> logger.setLevel(logging.DEBUG)

Usage as a function decorator

>>> from seed_papertrail.decorators import papertrail
>>> @papertrail.warn
... def testing(): print 1
...
>>> testing()
1
2017-01-24 11:16:02,100 [MainThread  ] [WARNI]  __main__.testing 0.000021:

One can also specify a custom log message and a sample size argument:

>>> @papertrail.warn('this is likely to explode', sample=0.5)
... def testing(): print 1
...
>>> testing()
1
>>> testing()
1
>>> testing()
1
2017-01-24 11:38:56,068 [MainThread  ] [WARNI]  __main__.testing 0.000018: this is likely to explode
>>> testing()
1
2017-01-24 11:38:59,628 [MainThread  ] [WARNI]  __main__.testing 0.000019: this is likely to explode
>>> testing()
1
>>>

Usage as a context manager

>>> from seed_papertrail.decorators import papertrail
>>> with papertrail.timer('hulloo') as l:
...     l.debug('more logging here!')
...     print 1
...
2017-01-24 11:32:23,109 [MainThread  ] [DEBUG]  more logging here!
1
2017-01-24 11:32:23,115 [MainThread  ] [DEBUG]  0.002581: hulloo, threshold:OK
>>>

You can also specify custom thresholds:

>>> with papertrail.timer('o_O', thresholds={'OK': (0, 0.1), 'FAIL': (0.1, 1000)}):
...     time.sleep(6)
...
2017-01-24 11:45:00,717 [MainThread  ] [DEBUG]  6.000664: o_O, threshold:FAIL

Addtionally the timer function allows one to specify the following keyword arguments:

  • level the logging level, defaults to DEBUG
  • logger the logger to log to, defaults to papertrail