6

通过阅读官方 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 开发服务器并且我看不到控制台日志消息。

4

2 回答 2

4

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

在下面添加到您的handlers部分LOGGING

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

        }

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

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

'formatters': {
        'verbose': {
            'format': '%(levelname)s %(asctime)s %(module)s %(process)d %(thread)d %(message)s'
        },
        'simple': {
            'format':
                '%(levelname)s %(message)s'
        },
    },
于 2012-10-11T14:01:21.083 回答
1

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

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'
        },
    },
}
于 2012-10-11T16:06:53.300 回答