Skip to main content

Handlers and helpers for Twiggy logging library.

Project description

[![ChangeLog](http://allmychanges.com/p/python/twiggy-goodies/badge/?rnd=1)](http://allmychanges.com/p/python/twiggy-goodies/)

Here you’ll find some useful addons to [Twiggy], pythonic logger. These addons help to use Twiggy with third-party libraries, which use standart library’s [logging][].

Main target was to create convenient way to write log items which are grouped by some request identifier. Twiggy already supports it by it’s fields method, but sometimes it is too inconvenient to pass logger object around. That is why I take idea of a threadlocal loggers stack from the [logbook][] and implemented it for twiggy.

Here is example how to use it:

from twiggy_goodies.setup import setup_logging from twiggy_goodies.threading import log

def some_function():

log.info(‘inner function does not accept logger’) log.info(‘but uses same field as caller’)

setup_logging(None)

log.info(‘before request’)

with log.fields(request_id=’foo’):

log.info(‘bar has happened’) some_function()

log.info(‘after request, id gone’)

Output will be, as expected:

2014-04-14T18:29:02Z:INFO:before request 2014-04-14T18:29:02Z:INFO:request_id=foo:bar has happened 2014-04-14T18:29:02Z:INFO:request_id=foo:inner function does not accept logger 2014-04-14T18:29:02Z:INFO:request_id=foo:but uses same field as caller 2014-04-14T18:29:02Z:INFO:after request, id gone

Same way, logger name could be changed, just replace fields context manager to name.

There is no dark magick behind the scene:

  1. setup_logging does simple setup and redirects all output from standart logging to twiggy.

  2. log object is proxies all logging methods to a topmost logger on the thread-local stack.

  3. fields and name context managers just create a new logger as original twiggy’s methods and put it on thread-local stack.

That is it.

Some other goodies

  • twiggy_goodies.syslog contains SysLogOutput.

  • twiggy_goodies.json contains JsonOutput, useful to pass data to logstash.

  • twiggy_goodies.logstash contains LogstashOutput, which sends messages directly to Logstash’s UDP port.

  • twiggy_goodies.django_rq contains job decorator, which groups all messages logged from one task, using UUID.

  • twiggy_goodies.django contains LogMixin class which could be mixed to any management command, to group all logged messages by single UUID.

  • twiggy_goodies.django also contains LogMiddleware, to do the same as LogMixin, but for each http request.

[Twiggy]: https://github.com/wearpants/twiggy [logging]: https://docs.python.org/2/library/logging.html [logbook]: http://pythonhosted.org//Logbook/

Project details


Download files

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

Source Distribution

twiggy-goodies-0.9.0.tar.gz (7.6 kB view details)

Uploaded Source

File details

Details for the file twiggy-goodies-0.9.0.tar.gz.

File metadata

File hashes

Hashes for twiggy-goodies-0.9.0.tar.gz
Algorithm Hash digest
SHA256 5f8128eca32540a40c2c68afcac45458c2d0bbd15e1177d61bfad065273ca2f8
MD5 34c8830768a068ebe9e769d30b2a0f22
BLAKE2b-256 d021c359f8a29cdb702de96fa3b9aea7da66f8e765b49af003031d5f112f0b07

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page