web-dev-qa-db-ja.com

Django:ログレベルをINFOまたはDEBUGに設定する方法

DjangoでデバッグレベルをDEBUGに変更しようとしました。コードにデバッグメッセージを追加したいためです。効果がないようです。

私のロギング構成:

LOGGING = {
    'version': 1,
    'disable_existing_loggers': False,
    'formatters': {
        'simple': {
            'format': '%(levelname)s %(message)s'
        },
    },
    'handlers': {
        'console':{
            'level':'DEBUG',
            'class':'logging.StreamHandler',
            'formatter': 'simple'
        },
    },
    'loggers': {
        'Django.request':{
            'handlers': ['console'],
            'propagate': False,
            'level': 'DEBUG',
        },
    },
}

コード:

import logging ; logger = logging.getLogger(__name__)
logger.debug("THIS MESSAGE IS NOT SHOWN IN THE LOGS")
logger.warn("THIS ONE IS")

コンソールでの出力:

WARNING:core.handlers:THIS ONE IS

また、設定ファイルでDEBUG = FalseおよびDEBUG = Trueを設定してみました。何か案は?

編集:ロガーでログレベルを直接設定すると、機能します。

import logging ; logger = logging.getLogger(__name__)
logger.setLevel(logging.DEBUG)
logger.debug("THIS MESSAGE IS NOT SHOWN IN THE LOGS")

出力:

DEBUG:core.handlers:THIS MESSAGE IS NOT SHOWN IN THE LOGS
WARNING:core.handlers:THIS ONE IS

しかし:設定ファイルは完全に無視されているようです。設定の両方のエントリをERRORに戻しても、両方のステートメントalwaysが出力されます。これは正しい動作ですか、それとも何か不足していますか?

14
kev

追加する必要があります。

'core.handlers': {
    'level': 'DEBUG',
    'handlers': ['console']
}

Django.requestエントリと並行して、または

'root': {
    'level': 'DEBUG',
    'handlers': ['console']
}

「ロガー」エントリと並行して。これにより、Django.requestロガーだけでなく、実際に使用しているロガーにレベルが設定されます。

pdate:すべてのモジュールのメッセージを表示するには、Django.requestの横にエントリを追加して、最上位のモジュールを含めます。 apihandlerscoreなど。パッケージ/モジュールの階層が何であるかを正確に言っていないので、もっと具体的にすることはできません。

10
Vinay Sajip

変更して修正しました

LOGGING = {
    ...
}

に:

logging.config.dictConfig({
    ...
})

たとえば、すべてのメッセージをコンソールに記録するには:

import logging.config
LOGGING_CONFIG = None
logging.config.dictConfig({
    'version': 1,
    'disable_existing_loggers': False,
    'formatters': {
        'console': {
            # exact format is not important, this is the minimum information
            'format': '%(asctime)s %(name)-12s %(levelname)-8s %(message)s',
        },
    },
    'handlers': {
        'console': {
            'class': 'logging.StreamHandler',
            'formatter': 'console',
        },
    },
    'loggers': {
    # root logger
        '': {
            'level': 'DEBUG',
            'handlers': ['console'],
        },
    },
})
5
Julián Luini