25

これは私の設定モジュールです:

LOGGING = {
  'version': 1,
  'disable_existing_loggers': False,
  'handlers': {
    'file': {
        'level': 'DEBUG',
        'class': 'logging.FileHandler',
        'filename': '/django-python/django/testapp/testapp.log',
    },
  },
  'loggers': {
    'django': {
        'handlers': ['file'],
        'level': 'DEBUG',
        'propagate': True,
    },
  },
}

これはビューファイルの私のコードです:

import logging
logger = logging.getLogger(__name__)
logger.info("this is an error message!!")

さまざまなモジュールから以前のログを取得していますが、上記のログ エントリ「これはエラー メッセージです」は取得していません。

4

4 に答える 4

37

ロギング構成は、django名前空間内のログのみをキャプチャします。

この行:

logger = logging.getLogger(__name__)

... モジュールの名前をこれらのログ ( docs )の名前空間として使用するようロガーに指示します。モジュールが と呼ばれる場合mymodule、ロギング構成に次のようなものを追加することで、これらのログをキャッチできます。

'loggers': {
   'django' : {...},
   'mymodule': {
        'handlers': ['file'],
        'level': 'DEBUG',
        'propagate': True,
    },
},
于 2016-04-12T11:05:45.500 に答える
11

アプリケーション名のためにロガー構成を追加する必要があります-次のようなものです

    'your_app_name': {
        'handlers': ['file'],
        'level': 'DEBUG',
        'propagate': True,
    },

ここまでで、django のデフォルト メッセージ (システム エラーなど) のロガーのみを宣言しました。


ロガー メッセージのレベルが重要であることに注意してください。

    logger.info("this is an error message!!")

ロガーのレベルが INFO またはより厳密である必要があるというメッセージを出力する方法

于 2016-04-12T11:05:32.480 に答える
10

「キャッチオール」ロガーをロガーセクションに追加できます。

'loggers': {
    '': {
        'handlers': ['file'],
        'level': 'DEBUG',
    }
}

Django のデフォルトのロガーではキャッチされないすべてのログ メッセージをキャッチします。

于 2018-09-28T09:53:39.610 に答える