Skip to main content

mongo database handler for python logging

Project description

log4mongo-python is mongo database handler for python logging, part of project.
log4mongo-python is using pymongo driver -


- python 2.7+
- pymongo 2.8+
- mongo database

For more information see *debian_requirements.txt* and *requirements.txt* files.


Example handler python configuration: ::

import logging
from log4mongo.handlers import MongoHandler

logger = logging.getLogger('test')

Contextual information

It is possible to decorate you document with contextual information. There are tow approaches.

**1.) approach**

import logging
from log4mongo.handlers import MongoHandler

handler = MongoHandler(host='localhost')
logger = logging.getLogger('test')
logging.LoggerAdapter(logger, {'ip': ''}).info('test')

**2.) approach**

import logging
from log4mongo.handlers import MongoHandler

handler = MongoHandler(host='localhost')
logger = logging.getLogger('test')
logger.addHandler(handler)'test', extra={'ip': ''})

As you can see, second approach is more straightforward and there is no need to use LoggerAdapter.

Capped collections

Capped collections are fixed-size collections that support high-throughput operations that insert, retrieve,
and delete documents based on insertion order. Capped collections work in a way similar
to circular buffers: once a collection fills its allocated space, it makes room for new documents
by overwriting the oldest documents in the collection.

Before switching to capped collections, read this document please:

This behaviour is disabled by default. You can enable this behaviour in constructor with *capped=True*:

import logging
from log4mongo.handlers import MongoHandler

handler = MongoHandler(host='localhost', capped=True)

Buffered handler

BufferedMongoHandler is a subclass of MongoHandler allowing to buffer log messages
and write them all at once to the database. The goal is to avoid too many writes to the database, thus avoiding
too frequent write-locks.
Log message buffer flush happens when the buffer is full, when a critical log message is emitted, and also periodically.
An early buffer flush can happen when a critical message is emitted.
And in order to avoid messages to stay indefinitively in the buffer queue before appearing in database, a periodical
flush happens every X seconds.

This periodical flush can also be deactivated with *buffer_periodical_flush_timing=False*,
thus avoiding the timer thread to be created.

Buffer size is configurable, as well as the log level for early flush (default is CRITICAL).

import logging
from log4mongo.handlers import BufferedMongoHandler

handler = BufferedMongoHandler(host='localhost', # All usual MongoHandler parameters are valid
buffer_size=100, # buffer size.
buffer_periodical_flush_timing=10.0, # periodical flush every 10 seconds
buffer_early_flush_level=logging.CRITICAL) # early flush level

logger = logging.getLogger().addHandler(handler)

Example using full function signature
Here is an example call with all parameters filled:

import logging
from log4mongo.handlers import MongoHandler

handler = MongoHandler(

logger = logging.getLogger().addHandler(handler)


** Tested on evnironment **

- Ubuntu 14.04
- python 2.7.4
- pymongo >2.8.3
- mongod - db version v3.0.2
- python unittest

**Running tests**

Before you run the test you must start mongo database. You will do so by this command: ::

$ mongod --dbpath /tmp/

To run the test run command: ::

$ python
$ python test

See vagrant file to quickly setup the test environment.

Original Author

| char0n (Vladimír Gorej, CodeScale s.r.o.)
| email:
| web:

Current Maitainer
| Oz Nahum Tiram
| email:
| web:


Project details

Download files

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

Files for log4mongo, version 1.6.0
Filename, size File type Python version Upload date Hashes
Filename, size log4mongo-1.6.0.tar.gz (9.5 kB) File type Source Python version None Upload date Hashes View

Supported by

Pingdom Pingdom Monitoring Google Google Object Storage and Download Analytics Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN DigiCert DigiCert EV certificate StatusPage StatusPage Status page