1. ホーム
  2. python

[解決済み] Django セットアップ デフォルトのログ記録

2023-01-02 15:48:11

質問

私の Django インストールのために "default" logger をセットアップする方法がわからないようです。私は Django 1.3 の新しい LOGGING の設定に settings.py .

を見てみると Django Logging Doc の例 を見ましたが、特定のロガーに対してのみロギングを行うハンドラをセットアップしているように見えます。彼らの例の場合、'django', 'django.request', そして 'myproject.custom' という名前のロガーに対してハンドラをセットアップしています。

私がしたいことは、デフォルトの logging.handlers.RotatingFileHandler を設定することです。つまり、もし私がプロジェクトのどこかに新しいモジュールを作り、それが以下のようなもので示されるとします。 my_app_name.my_new_module のようなもので、これを行うことができ、すべてのロギングが回転ファイルのログを得ることができるはずです。

# In file './my_app_name/my_new_module.py'
import logging
logger = logging.getLogger('my_app_name.my_new_module')
logger.debug('Hello logs!') # <-- This should get logged to my RotatingFileHandler that I setup in `settings.py`!

どのように解決するのですか?

解決した...

空文字列で参照することで、'catch all' logger を設定します。 '' .

例として、次の設定では、すべてのログイベントを logs/mylog.log に保存されていますが、例外として django.request に保存されるログイベントは例外です。 logs/django_request.log . なぜなら 'propagate' に設定されているからです。 False に対して、私の django.request を使うと、ログイベントは決して 'catch all' ロガーに到達しません。

LOGGING = {
    'version': 1,
    'disable_existing_loggers': True,
    'formatters': {
        'standard': {
            'format': '%(asctime)s [%(levelname)s] %(name)s: %(message)s'
        },
    },
    'handlers': {
        'default': {
            'level':'DEBUG',
            'class':'logging.handlers.RotatingFileHandler',
            'filename': 'logs/mylog.log',
            'maxBytes': 1024*1024*5, # 5 MB
            'backupCount': 5,
            'formatter':'standard',
        },  
        'request_handler': {
            'level':'DEBUG',
            'class':'logging.handlers.RotatingFileHandler',
            'filename': 'logs/django_request.log',
            'maxBytes': 1024*1024*5, # 5 MB
            'backupCount': 5,
            'formatter':'standard',
        },
    },
    'loggers': {
        '': {
            'handlers': ['default'],
            'level': 'DEBUG',
            'propagate': True
        },
        'django.request': {
            'handlers': ['request_handler'],
            'level': 'DEBUG',
            'propagate': False
        },
    }
}