1

Django でログを構成して、すべてのメッセージとそれ以上のメッセージに対してデフォルトで Sentry を使用するようにするにはどうすればよいですか?WARNING管理コマンドを実行すると、それを下げてINFOコンソール ロガーを追加しますか?

通常の操作 (mod_python または uWSGI を介してサイトを実行する) では、以上のことしか気にしませんWARNINGINFOただし、cronjobs を介して実行するいくつかの管理コマンドがあり、それらのメッセージ (管理コマンドだけでなく、より深いコードでも) をログファイルにも収集したいと考えています。一部の管理コマンドは外部ライブラリから取得されますが、それらを変更したくない (そこに余分な初期化を追加するため)。理想的には、WSGI を介して実行しているか、WSGI を介して実行しているかを設定モジュールで検出したいと考えていますmanage.py

私の現在の口述の関連部分LOGGING

    'root': {
        'level': 'WARNING',
        'handlers': ['sentry'],
    },
    'handlers': {
        'console': {
            'level': 'INFO',
            'class': 'logging.StreamHandler',
        }.
        'sentry': {
            'level': 'WARNING',
            'class': 'raven.contrib.django.handlers.SentryHandler',
        },
    },
4

2 に答える 2

0

非常に大まかな方法​​:manage.py環境に何かを追加するように変更し、設定モジュールでこれを検出します。

manage.py

import os
os.environ['DJANGO_IS_MANAGEMENT_COMMAND'] = '1'

設定モジュールで:

if os.environ.get('DJANGO_IS_MANAGEMENT_COMMAND', False):
    LOGGING['root']['level'] = 'INFO'
    LOGGING['root']['handlers'].append('console')

これにより、Celery ワーカーの実行時にロガーも追加されますが、デーモンには stdout がないと思うので、問題ではありませんか?

于 2012-08-31T12:30:14.760 に答える