如何通过登录Apache调试django?

时间:2014-03-18 05:12:15

标签: python django apache django-debug-toolbar

我已经在Apache上部署了我的django站点,这是我的开发机器上没有出现的问题,因此我想打印一些变量以查看发生了什么。

我尝试使用python日志记录模块,我这样做了:

import os, logging
FILE = os.getcwd()
logging.basicConfig(filename=os.path.join(FILE,'log.txt'),level=logging.DEBUG)  
logging.debug('Write')

在我的开发机器上,可能会有一个log.txt显示在我的django项目的根目录中。但是,当我做同样的事情时,我的服务器上的相应目录中没有显示log.txt文件。

有谁知道如何调试它?谢谢!

3 个答案:

答案 0 :(得分:0)

嗯,这是我用于记录的一个小配置。您还应检查文件权限 - 允许www-user写入目录吗?!

settins.py

LOGGING = {
    'version': 1,
    'disable_existing_loggers': True,
    'formatters': {
        'standard': {
            'format': "[%(asctime)s] %(levelname)s [%(name)s:%(lineno)s] %(message)s",
            'datefmt': "%d/%b/%Y %H:%M:%S"
        },
    },
    'handlers': {
        'null': {
            'level': 'DEBUG',
            'class': 'django.utils.log.NullHandler',
        },
        'logfile': {
            'level': 'DEBUG',
            'class': 'logging.handlers.RotatingFileHandler',
            'filename': BASE_DIR + "/logfile",
            'maxBytes': 50000,
            'backupCount': 2,
            'formatter': 'standard',
        },
        'console': {
            'level': 'INFO',
            'class': 'logging.StreamHandler',
            'formatter': 'standard'
        },
    },
    'loggers': {
        'django': {
            'handlers': ['console'],
            'propagate': True,
            'level': 'WARN',
        },
        'django.db.backends': {
            'handlers': ['console'],
            'level': 'DEBUG',
            'propagate': False,
        },
        '': {
            'handlers': ['console', 'logfile'],
            'level': 'DEBUG',
        },
    }
}

something.py

import logging
try:  # Python 2.7+
    from logging import NullHandler
except ImportError:
    class NullHandler(logging.Handler):
        def emit(self, record):
            pass

log = logging.getLogger(__name__)
log.addHandler(NullHandler())

def demo(foo):
    if foo not bar:
        log.debug('doh!')
    return

答案 1 :(得分:0)

您假设当前的工作目录是Django项目,但除非您在wsgi文件中专门更改它,否则情况不太可能。

但是,您不应该记录到单独的文件。默认日志记录设置将记录到Apache自己的/ var / log登录或其子目录中特定于站点的日志。删除你的额外配置,让Django登录。

答案 2 :(得分:-2)

您需要一个完整的堆栈跟踪来调试Web应用程序的未知异常。通常,您还需要检查每个堆栈的上下文变量以查找根本原因。日志可以帮助您统计异常,但在生产服务器上进行调试效率很低。

Sentry为跟踪和调试python错误提供了一个非常好的UI。它是开源的。它是jacobian(Django Co-Creator)去年Pycon谈话必备的django软件包之一。使用它。

sentry

sentry st