如果DEBUG为True,也启用Django日志记录

nem*_*ign 5 django django-settings

通过阅读官方的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,
        },
    }
}
Run Code Online (Sandbox Code Playgroud)

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

Pra*_*kar 4

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

将以下内容添加到您的handlers部分LOGGING

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

        }
Run Code Online (Sandbox Code Playgroud)

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

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

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