Skip to main content

log4django is full features logging platform for django applications.

Project description

log4django is full features logging platform for django applications. The project is in very early stage, so excuse the brief documentation.

Requirements

  • python 2.7

  • packages listed in setup.py

Installation

Install via pipy or copy this module into your project or into your PYTHON_PATH.

In your settings.py file:

Add log4django into INSTALLED_APPS.

INSTALLED_APPS = (
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.sites',
    'django.contrib.admin',
    'django.contrib.sitemaps',
    'debug_toolbar',
    'log4django'
)

Add log4django INTO CONTEXT_PROCESSORS.

TEMPLATE_CONTEXT_PROCESSORS = (
    'django.contrib.auth.context_processors.auth',
    'django.core.context_processors.debug',
    'django.core.context_processors.i18n',
    'django.core.context_processors.media',
    'django.core.context_processors.static',
    'django.core.context_processors.tz',
    'django.core.context_processors.request',
    'django.contrib.messages.context_processors.messages',
    'log4django.context_processors.log4django'
)

Configure your logging with log4django appender.

LOGGING = {
    'version': 1,
    'disable_existing_loggers': False,
    'handlers': {
        'log4django': {
            'level': 'DEBUG',
            'class': 'log4django.handlers.ModelHandler' # Synchronous log creations.
        },
        'log4django_async': {
            'level': 'DEBUG',
            'class': 'log4django.handlers.GearmanHandler' # Asynchronous log creations, doesn't block.
        }
    },
    'loggers': {
        '': {
            'handlers': ['log4django_async'],
            'level': 'DEBUG'
        }
    }
}

Add log4django urls into ROOT_URLCONF.

urlpatterns = patterns('',
    ....your other patterns
    url(r'^', include('log4django.urls', namespace='log4django', app_name='log4django')),
)

Defining namespace and app_name is important. Log4Django uses namespacing internally to avoid url name collisions.

Configuration

django settings.py constants with default values.

LOG4DJANGO_PAGE_TITLE = 'log4django'
LOG4DJANGO_CONNECTION_NAME = 'default'
LOG4DJANGO_DEFAULT_APP_ID = None  # If you have only one app, put App.pk here
LOG4DJANGO_GEARMAN_TASK_NAME = 'log4django_event'
LOG4DJANGO_PAGE_SIZE = 100  # How many records to display on one page.
LOG4DJANGO_PAGINATOR_RANGE = 15  # How many pages to show in pagination.
LOG4DJANGO_EXTRA_DATA_INDENT = 4  # Extra data json indentation.
LOG4DJANGO_AUTHENTICATION_PIPELINE', (
    'log4django.pipeline.authentication.is_logged',
))  # Basic authentication
'LOG4DJANGO_PERSISTATION_PIPELINE', (
    'log4django.pipeline.process_bundle_data.persist_record',
))  # Controlls how records are persisted.
LOG4DJANGO_CSV_EXPORT_EXTRA_JSON_PATHS = tuple()  #  List of json paths to include in csv export.
LOG4DJANGO_CSV_DOWNLOAD_FILE_NAME = 'log4django.csv'

Running asynchronously

Asynchronous queue is managed by gearman job server (http://gearman.org/). In your logging config use log4django.handlers.GearmanHandler as handler class. This way web request threads are not blocked by overhead of saving a lots of log records to your database backend, but are sent to asynchronous queue insted. You will also have to run management command that acts as gearman worker, pops log records from queue and saves log records to database asynchronously.

$ python manage.py log4django

Development setup

$ ./scripts/setup.sh
$ python manage.py syncdb --noinput
$ python manage.py test log4django
$ python manage.py runserver

Tests

Tested on evnironment

  • Linux Mint 15 Olivia 64-bit

  • python 2.7.4

  • python unitest

Running tests

To run the tests, execute one of the following command::

$ python manage.py test log4django

Author

char0n (Vladimir Gorej, CodeScale)

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

log4django-0.2b1.tar.gz (443.2 kB view details)

Uploaded Source

File details

Details for the file log4django-0.2b1.tar.gz.

File metadata

  • Download URL: log4django-0.2b1.tar.gz
  • Upload date:
  • Size: 443.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for log4django-0.2b1.tar.gz
Algorithm Hash digest
SHA256 28b205d6ce12eedd12cacb923fe0922eafba1a6e379bbe7fcf4b54f1def70426
MD5 efd2924320daac42ba6b9b5d53c67852
BLAKE2b-256 c188852e1cf841daf239ec957219b4ac31e8ea1cd0edefdaf0c6795d59a2e320

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