在Ubuntu / Apache Server上部署时,Django Logging无法正常工作

时间:2014-12-10 04:32:47

标签: django apache python-2.7 logging

我的Django Logger在我的本地计算机上运行正常但在将其部署到服务器时不起作用。

  • Local:OS X 10.9.5,Python 2.7.5,Django 1.6.2
  • 服务器:Ubuntu 12.04,Apache 2.2.22,mod_wsgi版本:3.3-4ubuntu0.1,Python 2.7.3,Django 1.6

在我的本地设置中,我运行python manage.py syncdb,这将创建survey.log文件,然后我跟随tail -f survey.log,以便在创建时看到错误消息。

在我的服务器上运行python manage.py syncdb,这将创建survey.log文件,然后我跟随tail -f survey.log。但是我看不到任何调试消息,当我用nano检查文件时它是空的。

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

views.py

import logging
logger = logging.getLogger(__name__)


logger.debug('This is your images list in 7: %s', images)

settings.py

LOGGING = {
    'version': 1,
    'disable_existing_loggers': False,
    'filters': {
        'require_debug_false': {
            '()': 'django.utils.log.RequireDebugFalse'
        }
    },
    'handlers': {
        'mail_admins': {
            'level': 'ERROR',
            'filters': ['require_debug_false'],
            'class': 'django.utils.log.AdminEmailHandler'
        },
        'applogfile': {
            'level':'DEBUG',
            'class':'logging.handlers.RotatingFileHandler',
            #'filename': os.path.join(DJANGO_ROOT, 'survey.log'),
            'filename': 'survey.log',

            'maxBytes': 1024*1024*15, # 15MB
            'backupCount': 10,
        }
    },
    'loggers': {
        'django.request': {
            'handlers': ['mail_admins'],
            'level': 'ERROR',
            'propagate': True,
        },
        'survey': {
            'handlers': ['applogfile',],
            'level': 'DEBUG',
        },
    }
}

修改

我现在发现我的Django错误日志正在写入我的Apache错误日志。这有什么不正常的吗?

正在运行

sudo tail /var/log/apache2/error.log

为我提供了我应该在上面的Django错误日志文件中获得的预期打印输出。 e.g。

[15/Dec/2014 21:36:07] DEBUG [survey:190] This is your images list in 7: ['P3D3.jpg', 'P1D1.jpg', 'P5D5.jpg']

3 个答案:

答案 0 :(得分:10)

您没有在views.py中使用正确的记录器。试试这个:

import logging
logger = logging.getLogger('survey')
logger.debug('This is a debug message.')

您获得的记录器必须与LOGGING中定义的记录器匹配。

答案 1 :(得分:1)

我的猜测是日志文件实际上已经创建了,但是在一个你不会被创建的目录中。尝试在配置中添加完整路径。像'filename': '/tmp/survey.log',这样的东西,重启apache并检查它是否在那里。当然,首先你必须应用Derek发布的解决方案。

您在apache日志中看到日志消息的原因可能是因为mod_wsgi以某种方式配置了默认(root)记录器,并且您的配置没有禁用它(您有'disable_existing_loggers': False,)。

答案 2 :(得分:0)

如果你没有传递文件名的完整路径,它会在运行进程启动的目录中创建(或者创建一个sys / chdir),这取决于使用dir的操作系统