【问题标题】:Enable Django logging also if DEBUG is True如果 DEBUG 为 True,也启用 Django 日志记录
【发布时间】:2012-10-02 05:07:52
【问题描述】:

通过阅读官方 django 文档,我对它了解不多。 https://docs.djangoproject.com/en/dev/topics/logging/#configuring-logging

如果 settings.py 中的 DEBUG 设置为 True,我也想启用日志记录。 我希望将错误记录在一个文件中。

怎么做?

这些是我目前拥有的用于日志记录的默认 django 设置:

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'
        }
    },
    'loggers': {
        'django.request': {
            'handlers': ['mail_admins'],
            'level': 'ERROR',
            'propagate': True,
        },
    }
}

PS: 我在我的开发环境中使用 Apache + mod_wsgi,因为我使用的是我在 LAN 上远程访问的开发机器,这意味着我没有使用 django 开发服务器并且我看不到控制台日志消息。

【问题讨论】:

    标签: django django-settings


    【解决方案1】:

    默认情况下,在任何一种 DEBUG 模式下都不会禁用 Django 日志记录,除非您已将其设置为。

    将下面添加到LOGGINGhandlers 部分

    'file':
            {
                'level':
                    'INFO',
                'class':
                    'logging.FileHandler',
                'formatter':
                    'verbose',
                'filename':
                    'myapp.log'
    
            }
    

    它将记录到您项目根目录中的myapp.log 文件。您可以指定完整的路径。

    并将格式化程序字段添加到 Logging dict

    'formatters': {
            'verbose': {
                'format': '%(levelname)s %(asctime)s %(module)s %(process)d %(thread)d %(message)s'
            },
            'simple': {
                'format':
                    '%(levelname)s %(message)s'
            },
        },
    

    【讨论】:

      【解决方案2】:

      这是一个受Simple Log to File example for django 1.3+启发的工作设置示例

      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'
              },
              'logfile': {
                  'level':'DEBUG',
                  'class':'logging.handlers.RotatingFileHandler',
                  'filename': SITE_ROOT + "/debug.log",
                  'maxBytes': 50000,
                  'backupCount': 2,
                  'formatter': 'custom',
              },
          },
          'loggers': {
              #'django': {
              #    'handlers':['logfile'],
              #    'level':'DEBUG',
              #    'propagate': True,
              #},
              #'django.request': {
              #    'handlers': ['mail_admins', 'logfile'],
              #    'level': 'DEBUG',
              #    'propagate': True,
              #},
              'nodeshot.core.mailing': {
                  'handlers': ['logfile'],
                  'level': 'DEBUG',
              },
          },
          'formatters': {
              'verbose': {
                  'format': '%(levelname)s %(asctime)s %(module)s %(process)d %(thread)d %(message)s'
              },
              'simple': {
                  'format': '%(levelname)s %(message)s'
              },
              'custom': {
                  'format': '%(levelname)s %(asctime)s\n%(message)s'
              },
          },
      }
      

      【讨论】:

        猜你喜欢
        • 2011-07-12
        • 2018-08-03
        • 2017-08-17
        • 1970-01-01
        • 2012-04-27
        • 2018-05-06
        • 1970-01-01
        • 1970-01-01
        • 2020-02-25
        相关资源
        最近更新 更多