记录一个特定应用程序的所有调试信息?

时间:2017-01-26 23:30:38

标签: django logging

我设置了日志记录,它运行良好。我现在要做的是记录一个名为“我的应用程序”的特定应用程序的所有调试信息以及其他日志,我不知道如何实现这一点。

现在正在设置工作:

LOGGING = {
    'version': 1,
    'disable_existing_loggers': False,
    #
    'formatters': {
        'default': {
            'format': '\n%(levelname)s - %(asctime)s\n%(message)s\n'
        },
    },
    #
    'handlers': {
        #
        'mail_admins': {
            'level': 'ERROR',
            'class': 'django.utils.log.AdminEmailHandler',
            'include_html': True,
        },
        #
        'debug_log': {
            'level': 'DEBUG',
            'class': 'logging.handlers.RotatingFileHandler',
            'filename': '/var/log/django/debug.log',
            'maxBytes': 1024*1024*5, 
            'backupCount': 5,
            'formatter': 'default',
        },
        #
        'error_log': {
            'level': 'ERROR',
            'class': 'logging.handlers.RotatingFileHandler',
            'filename': '/var/log/django/error.log',
            'maxBytes': 1024*1024*5,
            'backupCount': 5,
            'formatter': 'default',
        },
    },
    #
    'loggers': {
        '': {
            'handlers': ['mail_admins', 'error_log',],
            'level': 'INFO',
            'propagate': True,
        },
        'django': {
            'handlers': ['debug_log',],
            'level': 'DEBUG',
            'propagate': True,
        },
    }
}

我想设置DEBUG日志记录,捕获一个特定应用程序的所有内容。我将以下处理程序添加到LOGGING:

        'app_log': {
            'level': 'DEBUG',
            'class': 'logging.handlers.RotatingFileHandler',
            'filename': '/var/log/django/app.log',
            'maxBytes': 1024*1024*5,
            'backupCount': 5,
            'formatter': 'default',
        },

以下记录器

    'my_app': {
        'handlers': ['app_log',],
        'level': 'DEBUG',
        'propagate': True,
    },

将以下内容添加到my_app.views:

import logging

logger = logging.getLogger(__name__)

这就是我不确定接下来需要做什么的地方。我可以在某个视图中添加如下内容

    ...
    if blahblahblah:
        logger.debug('My Message Here')
    ...

事情很有效。但是,我真正想要的是整个应用程序的所有调试信息,而不仅仅是“我的消息在这里”。我想要所有的查询信息等...即:与标准调试日志记录相同的信息,但仅适用于那个应用程序。

我如何实现这一目标?

1 个答案:

答案 0 :(得分:1)

您尚未明确启用SQL query logging,但我不确定是否可以在应用范围内启用它。 AFAIK只能为整个项目启用或禁用它。

如果您想在应用级别或视图级别执行此操作,可以尝试以下操作:

from django.db import connection
logger.debug(connection.queries)

将此代码放在要查看sql日志的每个视图的末尾。