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第三方库


热门话题
tomcat Java条带错误   java OPENTSDB fsck修复程序不更正重复点   java JavaFX在控制器内切换自身的可见性   java maven surefire插件未并行执行运行程序   读取导致Freemarker模板引擎中TemplateException的Java对象   无法使Java库与我的Android应用程序一起工作   安卓 java。lang.IllegalStateException游标   使用Java检索XML文件中的XSL URL和名称   java如何从文本文件集合中提取特定值   电子邮件java mail gmail   java为什么finalize()只被垃圾收集器调用一次?   java方法findViewById(int)对于Json类型是未定义的。蛇形   java在安卓中尝试从brother打印机打印位图时遇到以下异常   java在颤振中支持Kotlin的优势   java从后面编写文本   java制作列表。第一个列表可以有相同的数字,第二个将是价格,尝试制作第三个列表,如果它们是相同的数字,它将添加价格