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

时间:2012-10-11 13:53:03

标签: 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,
        },
    }
}

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

2 个答案:

答案 0 :(得分:4)

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

在下面添加handlers

LOGGING部分
'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'
        },
    },

答案 1 :(得分:0)

这是受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'
        },
    },
}