0

Djangoにログインしたいモジュールがあります。これは次のようになります。

import logging
logger = logging.getLogger(__name__)

def foo():
    #this is a test of logging
    logger.info("info foo")
    logger.warning("warn foo")
    logger.error("error foo")

settings.pyのLOGGINGは次のように設定されています。

LOGGING = {
    'version': 1,
    'disable_existing_loggers': True,
    'formatters': {
        'verbose': {
            'format': '%(levelname)s %(asctime)s %(module)s %(process)d %(thread)d %(message)s'
        },
        'simple': {
            'format': '%(levelname)s %(message)s'
        },
        },
    'handlers': {
        'null': {
            'level':'DEBUG',
            'class':'django.utils.log.NullHandler',
            },
        'console':{
            'level':'DEBUG',
            'class':'logging.StreamHandler',
            'formatter': 'simple'
        },
        'mail_admins': {
            'level': 'ERROR',
            'class': 'django.utils.log.AdminEmailHandler',
        }
    },
    'loggers': {
        'django': {
            'handlers':['null', 'console'],
            'propagate': True,
            'level':'INFO',
            },
        'django.request': {
            'handlers': ['mail_admins'],
            'level': 'ERROR',
            'propagate': False,
            },
    }
}

fooを呼び出すビューを実行したときの出力は次のとおりです。

WARNING:root:warn foo
ERROR:root:error foo

情報ログも期待していましたが、もう一度試してみましょう。ただし、今回はLOGGINGのすべての「level」パラメータを「INFO」に設定します。

WARNING:root:warn foo
ERROR:root:error foo

OK...すべてを「エラー」に設定するのはどうですか?:

WARNING:root:warn foo
ERROR:root:error foo

LOGGINGはコメントアウトしましたか?

WARNING:root:warn foo
ERROR:root:error foo

DEBUG = Falseに設定しましたが、手動で設定するのも面倒です

LOGGING_CONFIG = 'django.utils.log.dictConfig'

他に何かアイデアはありますか?DjangoがLOGGING設定を無視している理由がわかりません。

4

1 に答える 1

2

いつものように、スタックオーバーフローでそれを入力すると、私の間違いに気づきます。

電話するのではなく

logger = logging.getLogger(__name__)

目的のロガーを具体的に呼び出す必要がありました。

logger = logging.getLogger('django')

これで問題は解決しました。

于 2012-08-15T14:48:23.053 に答える