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
(这是一种技术,用于防止在 公共回购)