跳转到主要内容

log4django 是 django 应用的全功能日志平台。

项目描述

log4django 是 django 应用的全功能日志平台。该项目处于非常早期阶段,所以请原谅文档的简略。

需求

  • python 2.7

  • setup.py 中列出的包

安装

通过 pipy 安装或将其模块复制到您的项目或PYTHON_PATH中。

在您的 settings.py 文件中

将 log4django 添加到 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'
)

将 log4django 添加到 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'
)

将 log_request_id 添加到 MIDDLEWARE_CLASSES

MIDDLEWARE_CLASSES = (
    'log_request_id.middleware.RequestIDMiddleware',
    # ... other middleware goes here
)

使用 log4django appender 配置您的日志。

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

        # South logger needs to be disabled, in order to be able to migrate log4django
        'south': {
           'handlers': ['null'],
           'level': 'INFO',
           'propagate': False
       }
    }
}

将 log4django urls 添加到 ROOT_URLCONF。

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

定义命名空间和 app_name 非常重要。Log4Django 在内部使用命名空间来避免 URL 名称冲突。

配置

django settings.py 常量具有默认值。

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'

异步运行

异步队列由 gearman 作业服务器管理(http://gearman.org/)。在您的日志配置中使用 log4django.handlers.GearmanHandler 作为处理程序类。这样,Web 请求线程不会被将大量日志记录保存到数据库后端的开销所阻塞,而是发送到异步队列。您还必须运行充当 gearman 工作员的管理命令,从队列中弹出日志记录并异步地将日志记录保存到数据库。

$ python manage.py log4django

开发环境设置

$ make bootstrap
$ python manage.py test log4django
$ python manage.py runserver

测试

在环境中测试

  • Linux Mint 15 Olivia 64位

  • python 2.7.4

  • python单元测试

运行测试

要运行测试,执行以下命令之一:

$ python manage.py test log4django

或者:

$ make test

作者

char0n (Vladimir Gorej, CodeScale)
电子邮件: gorej@codescale.net

项目详情


下载文件

下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。

源代码分发

log4django-0.9.1.tar.gz (445.5 kB 查看哈希值)

上传时间 源代码

支持者