Django的errodite异常日志记录。

django-errordite的Python项目详细描述


这个包提供了django和errodite之间的集成。

应用程序以标准python日志处理程序的形式提供。

它是errordite包日志处理程序的一个django感知子类。这个 意味着除了记录核心异常信息(其中 errorditehandler可以),这个处理程序是上下文感知的,如果您通过 将django请求对象放入记录器,则相关信息将 从请求中提取并添加到发送到errodite的数据中。附加 信息包括:客户端IP地址、用户代理、x-forwarded-for头 (如果你在负载均衡器后面),Django用户用户名(如果存在)。

要将请求追加到日志记录,请将其添加到extraarg:

import logging
logger = logging.getLogger(__name__)

def index_view(request):
    """
    Standard django view method.
    """
    try:
        do_something()
    except:
        logger.error("Something went wrong.", extra={'request': request})

有关“extra”关键字arg的更多详细信息,请参见python日志文档: http://docs.python.org/2/library/logging.html#logging.Logger.debug

安装

该库在pypi上作为“django errodite”提供,因此可以是 使用PIP安装:

$ pip install django-errordite

依赖关系

这个包依赖于errorditepackage-它应该是 自动安装。

配置

为了设置一个有效的djangorrorditehandler必须传入 errodite api令牌,您可以通过在http://www.errordite.com

日志处理程序应该在djangosettings.py文件中配置。

这是从基本的settings.py中提取的令牌 本地环境,并配置单个记录器:

import os

ERRORDITE_TOKEN = os.environ.get('ERRORDITE_TOKEN', None)
if ERRORDITE_TOKEN is None:
    raise Exception("You must set the ERRORDITE_TOKEN environment "
                    "variable if you wish to run the tests.")

LOGGING = {
    'version': 1,
    'disable_existing_loggers': False,
    'formatters': {
        'simple': {
            'format': '%(levelname)s %(message)s'
        },
    },
    'handlers': {
        'django_errordite': {
            'level': 'DEBUG',
            'class': 'django_errordite.DjangoErrorditeHandler',
            'token': ERRORDITE_TOKEN,
            'formatter': 'simple'
        },
    },
    'loggers': {
        'test': {
            'handlers': ['django_errordite'],
            'propagate': False,
            'level': 'DEBUG',
        },
    }
}

测试

包中有测试-可以使用django测试运行程序运行它们:

$ cd to/django-errordite/package/directory
$ python manage.py test test_app

test_app是包redist中的空django应用程序 用于强制django测试运行程序仅加载包测试的( 即不运行整个django测试套件。)

注意,这些测试会通过连线记录真正的异常,因此您需要 连接到网络以运行它们。您还需要设置本地环境 变量(errordite_token),在测试套件中选取。

如果您是*nix,您可以在命令行中传递此信息:

$ ERRORDITE_TOKEN=123 python manage.py test test_app

如果您在windows上,则需要将其显式设置为env var:

c:\> set ERRORDITE_TOKEN=123
c:\> python manage.py test test_app

(这是一种技术,用于防止在 公共回购)

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
SpringWeb中的java更新/通知其他用户   java Lambda性能测试   java Bukkit插件:空白符号   java在按下按钮后改变彩色正方形的大小   javajavac相当于“D”?   java序列化接口   属性无法从属性文件返回值   java我应该使用什么查询来使用Jsoup从html页面提取符号?   java Android Studio项目结构问题   JAVA方法和返回值/公共变量(基础)   java将NativeQuery映射到POJO   java如何在下面的程序中消除NumberFormatException?   在java中获取链表与数组中的对象   java Android Firebase将用户发送到聊天室