Django日志记录 - 用于本地开发

时间:2016-05-02 10:29:43

标签: python django

我一直在尝试正确配置django中的日志记录进行开发,所以我现在可以在控制台中看到它,但是当我从print更改为logging时,输出就不会出现了。

django本地设置设置:

LOGGING = {
    'version': 1,
    'disable_existing_loggers': False,
    'filters': {
        'require_debug_false': {
            '()': 'django.utils.log.RequireDebugFalse',
        },
        'require_debug_true': {
            '()': 'django.utils.log.RequireDebugTrue',
        },
    },
    'handlers': {
        'console': {
            'level': 'DEBUG',
            'filters': ['require_debug_true'],
            'class': 'logging.StreamHandler',
            'stream': sys.stdout

        },
    },
    'loggers': {
        'myapp.management': {
            'handlers': [
                # 'mail_admins',
                # 'syslog',
                'console'],
            'level': 'DEBUG',
        },
        'django': {
            'handlers': [
                # 'mail_admins',
                # 'syslog',
                'console'],
            'level': 'INFO',
        },
    }
}

然后在django管理命令中:

import logging

logger = logging.getLogger(__name__)

通过以下方式使用记录器:

def collect_data(self, url, method, payload=None):
        response = getattr(requests, method)(url=url json=payload, headers=self.headers)
        if response.status_code == 200:
            logging.debug('{}'.format(response.json())
            # print('{}'.format(response.json()))
            return response.json()
        else:
            logging.warning('{}'.format(response.raise_for_status()))
            # print('{}'.format(response.raise_for_status()))
            return response.raise_for_status()

1 个答案:

答案 0 :(得分:0)

如果管理文件夹中有一个名为test.py的文件,则可以这样配置:

'testproject.management.commands.test': {
            'handlers': ['my_handler'],
            'level': 'INFO',
            'propagate': True
        },

test.py中的导入可以这样:

import logging

logger = logging.getLogger(__name__)

Haven目前正确地测试了它,但这是来自我的一个项目,我在管理命令中使用了一个记录器,它工作正常。