5

以下のログ設定を django プロジェクト (sentry/raven も使用) で使用しています。歩哨/レイヴン ビットは正常に動作していますが、ファイル ログは動作していません。空のログ ファイルが作成されますが、使用するたびにlogging.info('foo')ログ ファイルに何も表示されません (つまり、空のままです)。助言がありますか?

LOGGING = {
    'version': 1,
    'disable_existing_loggers': True,
    'root': {
        'level': 'WARNING',
        'handlers': ['sentry'],
    },
    'formatters': {
        'verbose': {
            'format': '%(levelname)s %(asctime)s %(module)s %(process)d %(thread)d %(message)s'
        },
    },
    'handlers': {
        'sentry': {
            'level': 'ERROR',
            'class': 'raven.contrib.django.handlers.SentryHandler',
        },
        'file': {
            'level': 'INFO',
            'class': 'logging.FileHandler',
            'filename': '/var/log/django/breeding.log',
        },
        'console': {
            'level': 'DEBUG',
            'class': 'logging.StreamHandler',
            'formatter': 'verbose'
        }
    },
    'loggers': {
        'django.db.backends': {
            'level': 'ERROR',
            'handlers': ['console'],
            'propagate': False,
        },
        'raven': {
            'level': 'DEBUG',
            'handlers': ['console'],
            'propagate': False,
        },
        'sentry.errors': {
            'level': 'DEBUG',
            'handlers': ['console'],
            'propagate': False,
        },
    },
}
4

3 に答える 3

2

この同じ問題に遭遇しました。パーミッションの問題であることが判明しました。ロギングを構成した後に初めて開発サーバーを実行したとき/var/log/django/request.log、ローカル ユーザー (stretch) が所有するファイルがモード 644 で作成されました。

「本番」サーバー (nginx/uwsgi) を起動すると、サービスは www-data ユーザーとして実行され、/var/log/django/request.log書き込み用に開くことができませんでした。単純にログ ファイルを削除して uwsgi を再起動するだけで問題は解決しましたが、より洗練された長期的な修正を考え出す必要があります。

于 2014-03-23T15:35:08.503 に答える
1

これを機能させるには、次のように「file」ハンドラを各ロガーに追加する必要があります。

'loggers': {
    'django.db.backends': {
        'level': 'ERROR',
        'handlers': ['file','console'],
        'propagate': False,
    },
    'raven': {
        'level': 'DEBUG',
        'handlers': ['file','console'],
        'propagate': False,
    },
    'sentry.errors': {
        'level': 'DEBUG',
        'handlers': ['file','console'],
        'propagate': False,
    },
},

そうしないと、ロガーは指定されたファイルに何も書き込みません。

于 2015-03-12T01:58:47.417 に答える