【问题标题】:Python logger not working for django with apachePython 记录器不适用于带有 apache 的 django
【发布时间】:2014-03-03 06:15:10
【问题描述】:

我不知道为什么这不起作用。我使用 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)

我没有收到任何错误消息或任何输出,只是没有写入文件或任何内容。

我做错了什么?我创建了日志文件,并将其放在正确的位置并授予它完全权限。在这一点上,我变得非常绝望。我只是想要任何方式来记录一些东西,这样我就可以开始调试我的网站了。

【问题讨论】:

  • 你能通过 apache 得到其他错误信息吗?可能你的 apache 配置有误。
  • /logs/django.log 的文件权限是什么??
  • 是的,我在 appche 日志中遇到错误。文件权限为 777

标签: python django apache logging django-1.6


【解决方案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')

【讨论】:

    【解决方案2】:

    我曾经陷入同样的​​问题。我的发现让我有点困惑,但它确实有效。问题出在参数

    disable_existing_loggers: True,
    

    将此参数设置为 true,意味着您要禁用所有记录器并用您定义的现有 django 记录器覆盖它。但是,它不会自动这样做。您还需要在 settings.py 文件中重新定义这些记录器及其父级。

    就我而言,我没有任何此类要求。因此,与其摆脱重新定义所有记录器的痛苦,我只是更改了参数并将其设置为 false。它奏效了。

    disable_existing_loggers: False,
    

    我希望这能解决您的问题。也可以执行权限检查。

    另外,您可以使用Sentry 来跟踪您的代码有什么问题。

    【讨论】:

    • 它不起作用:/文件名从哪里开始?是 dirOfSettingsFile/logs/django.log 吗?还是基于ir/logs/django.log
    • 我认为问题出在您的配置上。你曾经使用过:'filename': '/logs/django.log',现在 Django 会在这里查找“/”下的“logs”目录,然后会在该目录中创建一个文件。因此,如果出现权限问题或目录不存在,将不会创建文件,您将不会观察到任何内容。要解决此问题,请在“/”目录中创建“日志”目录。请注意,如果您在 Windows 机器上运行它,这将失败。
    • 更好的方法是使用 "filename': 'logs/django.log' 参数并在 settings.py 所在的同一目录下创建日志目录。
    猜你喜欢
    • 2019-04-17
    • 2018-07-27
    • 1970-01-01
    • 1970-01-01
    • 2023-02-21
    • 1970-01-01
    • 1970-01-01
    • 2014-06-29
    • 1970-01-01
    相关资源
    最近更新 更多