Django-Sentry发送错误到localhost:9000/store时出现405错误
Django-sentry对我不太友好。我正在尝试将错误信息发送到localhost:9000/store。这里是我遇到的错误:
jamis$ python manage.py runserver
Validating models...
0 errors found
Django version 1.3.1, using settings 'hv.settings'
Development server is running at http://127.0.0.1:8000/
Quit the server with CONTROL-C.
// useless info left out
Thu, 22 Dec 2011 18:45:13 +0000 [ERROR] M:sentry.errors.client, P:9067, F:base.py:226, MSG:Unable to reach Sentry log server: HTTP Error 405: METHOD NOT ALLOWED (url: http://0.0.0.0:9000/store, body: )
Traceback (most recent call last):
File "/Library/Python/2.7/site-packages/raven/base.py", line 222, in send
return self.send_remote(url=url, data=message, headers=headers)
File "/Library/Python/2.7/site-packages/raven/base.py", line 201, in send_remote
response = urllib2.urlopen(req, data).read()
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 126, in urlopen
return _opener.open(url, data, timeout)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 400, in open
response = meth(req, response)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 513, in http_response
'http', request, response, code, msg, hdrs)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 432, in error
result = self._call_chain(*args)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 372, in _call_chain
result = func(*args)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 619, in http_error_302
return self.parent.open(new, timeout=req.timeout)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 400, in open
response = meth(req, response)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 513, in http_response
'http', request, response, code, msg, hdrs)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 438, in error
return self._call_chain(*args)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 372, in _call_chain
result = func(*args)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 521, in http_error_default
raise HTTPError(req.get_full_url(), code, msg, hdrs, fp)
HTTPError: HTTP Error 405: METHOD NOT ALLOWED
Thu, 22 Dec 2011 18:45:13 +0000 [WARNING] M:sentry.errors.client, P:9067, F:base.py:227, MSG:Not Found: /favicon.ico
Thu, 22 Dec 2011 18:45:13 +0000 [WARNING] M:django.request, P:9067, F:base.py:142, MSG:Not Found: /favicon.ico
[22/Dec/2011 18:45:14] "POST /accounts/login/ HTTP/1.1" 302 0
Thu, 22 Dec 2011 18:45:15 +0000 [ERROR] M:sentry.errors.client, P:9067, F:base.py:226, MSG:Unable to reach Sentry log server: HTTP Error 405: METHOD NOT ALLOWED (url: http://0.0.0.0:9000/store, body: )
Traceback (most recent call last):
File "/Library/Python/2.7/site-packages/raven/base.py", line 222, in send
return self.send_remote(url=url, data=message, headers=headers)
File "/Library/Python/2.7/site-packages/raven/base.py", line 201, in send_remote
response = urllib2.urlopen(req, data).read()
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 126, in urlopen
return _opener.open(url, data, timeout)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 400, in open
response = meth(req, response)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 513, in http_response
'http', request, response, code, msg, hdrs)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 432, in error
result = self._call_chain(*args)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 372, in _call_chain
result = func(*args)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 619, in http_error_302
return self.parent.open(new, timeout=req.timeout)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 400, in open
response = meth(req, response)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 513, in http_response
'http', request, response, code, msg, hdrs)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 438, in error
return self._call_chain(*args)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 372, in _call_chain
result = func(*args)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 521, in http_error_default
raise HTTPError(req.get_full_url(), code, msg, hdrs, fp)
HTTPError: HTTP Error 405: METHOD NOT ALLOWED
Thu, 22 Dec 2011 18:45:15 +0000 [CRITICAL] M:sentry.errors.client, P:9067, F:base.py:227, MSG:
Thu, 22 Dec 2011 18:45:15 +0000 [CRITICAL] M:root, P:9067, F:home.py:17, MSG:
[22/Dec/2011 18:45:15] "GET / HTTP/1.1" 200 8903
[22/Dec/2011 18:45:15] "GET /static/css/build/bootstrap/bootstrap.css HTTP/1.1" 304 0
[22/Dec/2011 18:45:15] "GET /static/css/build/hv-pages.css HTTP/1.1" 200 2019
[22/Dec/2011 18:45:15] "GET /static/css/build/pages/hv-notifications-dialogs.css HTTP/1.1" 200 373
Thu, 22 Dec 2011 18:45:15 +0000 [ERROR] M:sentry.errors.client, P:9067, F:base.py:226, MSG:Unable to reach Sentry log server: HTTP Error 405: METHOD NOT ALLOWED (url: http://0.0.0.0:9000/store, body: )
Traceback (most recent call last):
File "/Library/Python/2.7/site-packages/raven/base.py", line 222, in send
return self.send_remote(url=url, data=message, headers=headers)
File "/Library/Python/2.7/site-packages/raven/base.py", line 201, in send_remote
response = urllib2.urlopen(req, data).read()
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 126, in urlopen
return _opener.open(url, data, timeout)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 400, in open
response = meth(req, response)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 513, in http_response
'http', request, response, code, msg, hdrs)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 432, in error
result = self._call_chain(*args)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 372, in _call_chain
result = func(*args)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 619, in http_error_302
return self.parent.open(new, timeout=req.timeout)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 400, in open
response = meth(req, response)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 513, in http_response
'http', request, response, code, msg, hdrs)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 438, in error
return self._call_chain(*args)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 372, in _call_chain
result = func(*args)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 521, in http_error_default
raise HTTPError(req.get_full_url(), code, msg, hdrs, fp)
HTTPError: HTTP Error 405: METHOD NOT ALLOWED
Thu, 22 Dec 2011 18:45:15 +0000 [WARNING] M:sentry.errors.client, P:9067, F:base.py:227, MSG:Not Found: /favicon.ico
Thu, 22 Dec 2011 18:45:15 +0000 [WARNING] M:django.request, P:9067, F:base.py:142, MSG:Not Found: /favicon.ico
我在settings.py文件中设置了一些Sentry的配置,具体如下:
SENTRY_SERVERS = ['http://0.0.0.0:9000/store']
SENTRY_KEY = "666"
TEMPLATE_DEBUG = True
SENTRY_TESTING = True
LOGGING = {
'version': 1,
'disable_existing_loggers': True,
'formatters': {
'default': {
'format': '%(asctime)s [%(levelname)s] M:%(name)s, P:%(process)d, F:%(filename)s:%(lineno)d, MSG:%(message)s',
'datefmt': '%a, %d %b %Y %H:%M:%S %z',
},
},
'root': {
'level':'DEBUG', # CHANGE TO DEFAULT_LEVEL
'handlers':['sentry', 'console'],
},
'handlers': {
'sentry': {
'level':'INFO',
'class': 'raven.contrib.django.handlers.SentryHandler',
'formatter':'default'
},
'console':{
'level':'INFO',
'class':'logging.StreamHandler',
'formatter': 'default'
},
},
'loggers': {
'sentry.errors': {
'level': 'DEBUG',
'handlers': ['console'],
'propagate': False,
},
}
}
在代码的另一个部分,我手动抛出了一个错误,代码如下:
logger = logging.getLogger()
logger.critical()
另外,我在我的INSTALLED_APPS中添加了sentry和raven.contrib.django。
这是Sentry的默认配置文件(位于~/.sentry/sentry.conf.py):
import os.path
from sentry.conf.server import *
ROOT = os.path.dirname(__file__)
DATABASES = {
'default': {
# You can swap out the engine for MySQL easily by changing this value
# to ``django.db.backends.mysql`` or to PostgreSQL with
# ``django.db.backends.postgresql_psycopg2``
'ENGINE': 'django.db.backends.sqlite3',
'NAME': os.path.join(ROOT, 'sentry.db'),
'USER': 'postgres',
'PASSWORD': '',
'HOST': '',
'PORT': '',
}
}
SENTRY_KEY = "666"
# Set this to false to require authentication
SENTRY_PUBLIC = True
SENTRY_WEB_HOST = '0.0.0.0'
SENTRY_WEB_PORT = 9000
SENTRY_WEB_LOG_FILE = os.path.join(ROOT, 'sentry.log')
SENTRY_WEB_PID_FILE = os.path.join(ROOT, 'sentry.pid')
我相信我只是错误地访问了Sentry服务器,但我不知道具体哪里出了问题。关于raven和django-sentry的文档非常简略!任何帮助都会非常感激。
2 个回答
0
我遇到了一个稍微类似的问题,原因也是一样的。把它发在这里。
这是生成的sentry配置文件的样子。
# You should configure the absolute URI to Sentry. It will attempt to guess it if
# you don't but proxies may interfere with this.
SENTRY_URL_PREFIX = 'http://localhost:9001' # No trailing slash!
SENTRY_WEB_HOST = '0.0.0.0'
SENTRY_WEB_PORT = 9001`
我用sentry test
测试的时候是可以正常工作的。不过,当我插入日志时却出现了一些错误。
ERROR Unable to reach Sentry log server: <urlopen error timed out>
(url:http://localhost:9001/api/store/)
..........
..........
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py",
line 1174, in do_open raise URLError(err).....
URLError: <urlopen error timed out>
那些错误在我添加了一个结尾的斜杠后消失了,尽管说明书上没有提到这点。可能和我的本地设置有关或其他什么原因。
6
我花了好几个小时才搞明白这个问题!如果你也遇到这个问题,可能这个解决办法对你有用:
SENTRY_SERVERS = ['http://0.0.0.0:9000/store']
需要在后面加一个斜杠!
SENTRY_SERVERS = ['http://0.0.0.0:9000/store/']
真是的。