DjangoがHerokuのログを表示しない


14

INFOHerokuのログにDjangoによって作成されたログエントリ(レベル)が表示されません。

これは私の構成です:

LOGGING = {
    'version': 1,
    'disable_existing_loggers': False,
    'filters': {
        'require_debug_false': {
            '()': 'django.utils.log.RequireDebugFalse',
        },
        'require_debug_true': {
            '()': 'django.utils.log.RequireDebugTrue',
        },
        'not_development_filter': {
            '()': NotDevelopmentFilter,
        },
    },
    'handlers': {
        'console':{
            'level': 'INFO',
            'class': 'logging.StreamHandler',
        },
        'null': {
            'class': 'django.utils.log.NullHandler',
        },
        'mail_admins': {
            'level': 'ERROR',
            'filters': ['not_development_filter'],
            'class': 'django.utils.log.AdminEmailHandler',
            'include_html': True,
        }
    },
    'loggers': {
        '': {
            'handlers': ['mail_admins', 'console'],
            'level': 'INFO',
        },
        'django': {
            'handlers': ['console'],
        },
        'django.request': {
            'handlers': ['mail_admins'],
            'level': 'ERROR',
            'propagate': False,
        },
        'py.warnings': {
            'handlers': ['console'],
        },
    }
}

Herokuインターフェースでログエントリを確認したいと思います。なぜそこに見えないのでしょうか?


print何かするだけなら何か見ますstdoutか?
アナトリーテクトニック

それは2年ぶりです;)
ラムラチャム

3
私はまだ答えられていないことがわかりました。=)
アナトリーテクトニック

1
@RamRachum解決したら、答えを書くか、どうにかして閉じます。そうでなければ、人々のレーダーにポップアップし続けます。
マイクフィードラー

回答:


1

python-始めるアプリ、タグ付けされていないログのdjangoERRORレベルのログはに現れherokuたログが、INFOログにはありません。

タグ付けされていないログで機能させるにdjangoは、次のような設定が必要です(あなたのものと同様):

LOGGING = {
    'version': 1,
    'disable_existing_loggers': False,
    'handlers': {
        'console': {
            'class': 'logging.StreamHandler',
        },
    },
    'loggers': {
        '': {
            'handlers': ['console'],
            'level': 'INFO',
        },
        'django': {
            'handlers': ['console'],
            'level': 'INFO',
        },
    },
}

したがって、Procfileを含めてpython-getting-startedのように構成を調整すると、うまくいくはずです。

djangoでタグ付けされていないログはviews/hello.py次のとおりです。

import logging
logger = logging.getLogger(__name__)

# Create your views here.
def index(request):
    logger.error('testing logging!')
    logger.info('testing info logging')
    logger.debug('testing debug logging')

    # return HttpResponse('Hello from Python!')
    return render(request, 'index.html')

最初に試したとき、エラーログのみが表示されました。前のコードスニペットにロギング構成を追加すると、情報とエラーログが表示されました。これはすべてですDEBUG = False(リポジトリ内のコードから変更されていますDEBUG = True)。

空の文字列キーloggers'')よりも具体的なエントリを作成することで、空の文字列キーを使用してすべてをログに記録するよりも、おそらくより適切です。

最後に、あなたのログファイルに、そこINFOログがコンソールに表示されませんケースだ、またはHerokuのは、ログに記録します。それはへのINFOログならdjango.requestそれだけに行く、あなたの設定で、'mail_admins'あるためpropagateですFalse。この場合、にpropagate設定する方が理にかなっていると思いますTrue

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.