Django Logging没有输出到nginx服务器上的日志文件

时间:2017-05-01 04:39:07

标签: django nginx gunicorn

我的Django Logger在我的本地计算机上运行正常,但在将其部署到服务器时无效。

Local:OS X 10.9.5,Python 2.7,Django 1.10.5

AWS服务器:Ubuntu,Nginx,Gunicorn,Django

在我的本地设置中运行python manage.py runserver,这将在我的根目录中创建debug.log文件。当我通过虚拟环境启动本地服务器时,我通过localhost:8000访问该站点,并在debug.log上获取这些日志。

"GET / HTTP/1.1" 200 2908
"GET /projects HTTP/1.1" 200 3461
Inside app views index

在我的生产服务器上运行python manage.py runserver,这将创建debug.log文件。我通过sudo service nginx restart重新启动Nginx服务器,然后访问我的网页并单击与运行本地服务器时相同的链接。

当我vim debug.log进入debug.log文件后,在访问网站并点击网页中的相同链接后,我看不到任何调试消息。

为什么我的生产环境中没有记录到debug.log中的日志记录数据?我错过了什么?

views.py

import logging
logger = logging.getLogger(__name__)

def index(request):
    logger.debug('Inside app views index')
    return render(request, "first_app/index.html")

local_settings.py (应该没关系,但我在本地计算机和生产服务器中使用local_settings.py)

#BASE_DIR was already part of django settings.py file when created.
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))

LOGGING = {
    'version': 1,
    'disable_existing_loggers': False,
    'handlers': {
        'file': {
            'level': 'DEBUG',
            'class': 'logging.FileHandler',
            'filename': os.path.join(BASE_DIR, 'debug.log'),
        },
        'null': {
            'class': 'logging.NullHandler',
        },
    },
    'loggers': {
        'django': {
            'handlers': ['file'],
            'level': 'DEBUG',
            'propagate': True,
        },
        'apps': {
            'handlers': ['file'],
            'level': 'DEBUG',
            'propagate': True,
        },
        'django.db.backends': {
            'handlers': ['null'],
            'propagate': False,
        },
    },
}

我的档案路线是

-homepage
  -apps
  -homepage
  -static
  -venv
  manage.py
  homepage.sock
  db.sqlite3
  debug.log
  requirement.txt

1 个答案:

答案 0 :(得分:0)

我相信Nginx会截获请求(GET,POST等)日志,并将其记录到其nginx-access.log中,而您的INFO,ERROR日志应位于debug.log