我的Django Logger在我的本地计算机上运行正常但在将其部署到服务器时不起作用。
在我的本地设置中,我运行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']
答案 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的操作系统