当我遇到错误时,我想登录 Django 和 Gunicorn。我用Python学习TDD,http://chimera.labs.oreilly.com/books/1234000000754/ch17.html#_setting_up_logging
这是我的代码。/etc/init/gunicorn-superlists-staging.mysite.com.conf
description "Gunicorn server for superlists-staging.mysite.com"
start on net-device-up
stop on shutdown
respawn
setuid junsu
chdir /home/junsu/sites/superlists-staging.mysite.com/source
exec ../virtualenv/bin/gunicorn
--bind unix:/tmp/superlists-staging.mysite.com.socket
--access-logfile ../access.log
--error-logfile ../error.log
superlists.wsgi:application
帐户/身份验证.py
import requests
import logging
from django.contrib.auth import get_user_model
User = get_user_model()
PERSONA_VERIFY_URL = 'https://verifier.login.persona.org/verify'
DOMAIN = 'localhost'
class PersonaAuthenticationBackend(object):
def authenticate(self, assertion):
logging.warning('authenticate function')
response = requests.post(
PERSONA_VERIFY_URL,
data={'assertion': assertion, 'audience': settings.DOMAIN}
)
logging.warning('got response form persona')
logging.warning(response.content.decode())
if response.ok and response.json()['status'] == 'okay':
email = response.json()['email']
try:
return User.objects.get(email=email)
except User.DoesNotExist:
return User.objects.create(email=email)
def get_user(self, email):
try:
return User.objects.get(email=email)
except User.DoesNotExist:
return None
超级列表/设置.py
[....]
LOGGING = {
'version': 1,
'disable_existing_logger': False,
'handlers': {
'console': {
'level': 'DEBUG',
'class': 'logging.StreamHandler',
},
},
'loggers': {
'django': {
'handlers': ['console'],
},
},
'root': {'level': 'INFO'},
}
我的"错误.log"只是记录这个。
[2016-02-08 14:42:56 +0900] [3355] [INFO] Listening at: unix:/tmp/superlists-staging.mysite.com.socket (3355)
[2016-02-08 14:42:56 +0900] [3355] [INFO] Using worker: sync
[2016-02-08 14:42:56 +0900] [3359] [INFO] Booting worker with pid: 3359
[2016-02-08 14:58:22 +0900] [3355] [INFO] Handling signal: term
[2016-02-08 14:58:22 +0900] [3355] [INFO] Shutting down: Master
[2016-02-08 14:58:22 +0900] [3470] [INFO] Starting gunicorn 19.4.3
[2016-02-08 14:58:22 +0900] [3470] [INFO] Listening at: unix:/tmp/superlists-staging.mysite.com.socket (3470)
[2016-02-08 14:58:22 +0900] [3470] [INFO] Using worker: sync
[2016-02-08 14:58:22 +0900] [3474] [INFO] Booting worker with pid: 3474
我想查看错误日志记录,我该怎么办?
对于那些搜索错误日志的人(nginx + gunicorn + django(安装程序:
只需使用这些(某些命令也特定于套接字文件所在的位置(
- 通过键入以下内容检查 Nginx 进程日志:
sudo journalctl -u nginx
- 通过键入以下内容检查 Nginx 访问日志:
sudo less /var/log/nginx/access.log
- 通过键入以下内容检查 Nginx 错误日志:
sudo less /var/log/nginx/error.log
- 通过键入以下内容检查 Gunicorn 应用程序日志:
sudo journalctl -u gunicorn
- 通过键入以下内容检查 Gunicorn 套接字日志:
sudo journalctl -u gunicorn.socket
参考
dr 你的代码没有错
您似乎已正确遵循链接的教程,并且可能会在/home/junsu/sites/superlists-staging.mysite.com/
目录中找到您的日志文件。
无论如何,你的问题中有几点需要解决,我会尝试这样做。
记录器和处理程序
上面引用的设置模块设置单个日志记录处理程序console
(StreamHandler( 和一个可以使用该处理程序的django
记录器。
root
记录器没有定义任何处理程序,"django"会将任何内容记录到stderr
,并且仅适用于级别 INFO 及更高版本。我运行了一个快速测试,默认情况下,root
记录器也定义了StreamHandler
。
您的authentication.py
模块当前调用logging.warning
该记录器记录root
(即它logger = logging.getLogger(); logger.warning('stuff')
(。但是,您可能希望定义一个更具体的处理程序,以便更轻松地找到模块的日志。这在参考教程的这一部分中进行了说明。
Gunicorn 默认重定向 stderr
默认情况下,它似乎设置为捕获当前重定向到日志文件的stderr
流。但是,我的建议是使用您的守护程序应用程序(似乎您正在使用upstart
(来记录 stderr/out。
暴发户日志记录
正如 gunicorn 文档中所解释的,配置upstart
非常简单。
如果你在/etc/init/gunicorn-superlists-staging.mysite.com.conf
配置中删除--error-logfile
选项,gunicorn 将默认将其输出记录到 stderr
然后由暴发户以您喜欢的任何方式捕获。
如果您使用的是 upstart 1.7 或更高版本,则默认情况下应启用标准输出/错误捕获。但是,如果您使用早期版本的 upstart,我的建议是在配置中添加一个console log
选项,所有输出(stdout/stderr(将简单地记录到(我假设(/var/log/upstart/gunicorn-superlists-staging.mysite.com.log