0

したがって、Django プロジェクトには 2 つのロガーがあります。1 つは認証の失敗用で、もう 1 つはそれらを含むだけでなく、何かが編集されたときのメッセージも含みます (基本的に、私が logger コマンドを持っているすべてのもの)。ただし、両方のロガーを使用したいモジュールで少し問題があるようです。現在、私の 2 つのロガーは次のように定義されています。

'': {
    'handlers': ['file'],
    'level': 'INFO',
    'propagate': True,
},
'auth': {
    'handlers': ['file_auth'],
    'level': 'CRITICAL',
    'propagate': True,
}

そして、私のハンドラーは次のとおりです。

'file': {
    'level': 'INFO',
    'class': 'logging.FileHandler',
    'filename': '/home/debug.log',
    'formatter': 'simple',
},
'file_auth': {
    'level': 'CRITICAL',
    'class': 'logging.FileHandler',
    'filename': '/home/debug2.log',
    'formatter': 'verbose',
},

私のDjangoビューの上部には、

import logging
logger = logging.getLogger('')
logger = logging.getLogger('auth')

次に、1 つのビュー内に logger.info(メッセージ) があります。これを logger.critical(message) に変更すると、両方のログ ファイルにメッセージが表示されますが、logger.info のままだと何も起こりません。

(おそらく役に立たない情報... settings.py の LOGGING セクションの冒頭に、次のものがあります。

'version': 1,
'disable_existing_loggers': False,

それらに関連性があるかどうかはわかりません。しかし、以前は、魔法のように変更されたものを導入する順序を切り替えるまで、両方のファイルにエラーを表示するのに苦労していました-なぜそれが違いを生むのか本当にわかりません)

誰かが私を助けてくれたら本当に感謝しています....おそらく本当に簡単ですが、それがどのように機能するかを本当に理解していないことを認めなければなりません..

4

1 に答える 1

1

''(ルート ロガー) とという名前の 2 つの異なるロガーがあり'auth'ます。2 つのステートメントが表示される順序:

logger = logging.getLogger('')
logger = logging.getLogger('auth')

あなたが呼び出すときに明らかに違いがあります

logger.info(...)

2 つのケースのように、2 つの異なるロガーでメソッドを呼び出します。コードを次のように変更したい場合があります

root_logger = logging.getLogger('')
logger = logging.getLogger('auth')

そして、必要に応じてroot_loggerまたはでメソッドを呼び出しloggerます。

于 2013-08-28T15:06:03.927 に答える