我不知道为什么这不起作用。我使用linode来托管我的ubuntu服务器,并使用apache托管我的django。
在我的settings.py文件中我有这个来定义我的记录器
import logging
LOGGING = {
'version': 1,
'disable_existing_loggers': True,
'formatters': {
'standard': {
'format' : '%(asctime)s [%(levelname)s] %(name)s: %(message)s'
},
},
'handlers': {
'default': {
'level': 'DEBUG',
'class': 'logging.handlers.RotatingFileHandler',
'filename': '/logs/django.log',
'maxBytes': 1024*1024*5,
'formatter' : 'standard',
'backupCount': 5,
},
},
'loggers': {
'': {
'handlers': ['default'],
'level': 'DEBUG',
'propagate': True,
},
},
}
然后我在我的视图中使用它
import logging
logr = logging.getLogger(__name__)
def login(request):
logr.debug("THIS BETTER WORK >:O")
c = {}
c.update(csrf(request))
return render_to_response('accounts/login.html', c)
我没有收到任何错误消息或任何输出,只是没有写入文件或任何内容。
我做错了什么?我创建了日志文件,将其放在正确的位置并赋予其完全权限。在这一点上,我非常绝望。我只想要任何方式记录一些东西,以便我可以开始调试我的网站。
答案 0 :(得分:1)
我被困在同一个问题上一次。我发现对我来说有点混乱,但它有效。问题在于参数
disable_existing_loggers: True,
将此参数设置为true表示您要禁用所有记录器并使用已定义的现有django记录器覆盖它。但是,它不会自动执行此操作。您还需要在settings.py文件及其父项中重新定义这些记录器。
就我而言,我没有任何此类要求。因此,我只是更改了参数并将其设置为false,而不是从重新定义所有记录器的痛苦中解脱出来。它起作用了。
disable_existing_loggers: False,
我希望这能解决你的问题。也可以执行权限检查。
另外,您可以使用Sentry来跟踪代码的错误。
答案 1 :(得分:1)
我迟了几年,但无论如何我遇到了类似的问题,下面是我的评论
'filename': '/logs/django.log',
到
'filename': '/fillpath/logs/django.log',
or
BASE_DIR = 'django project path'
'filename': os.path.join(BASE_DIR, 'logs/django.log'),
同样在视图中或您想要记录的任何地方
下面有一个使用django runserver,但没有使用apache httpd
import logging
logme = logging.getLogger('__name__')
进行以下更改,它适用于apache / httpd
import logging
logme = logging.getLogger('seekers')