HerokuログにDjango)によって作成されたログエントリ(INFO
のレベル)がありません。
これは私の設定です:
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インターフェイスでログエントリを確認したいのですが。なぜ私はそこに彼らを見ていませんか?
python-getting-started アプリで、Django
のタグが付けられていないログの場合、ERROR
レベルのログは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ログに表示されない場合があります。それがDjango.request
へのINFOログである場合、設定では'mail_admins'
にのみ移動します。 propagate
はFalse
であるためです。この場合、propagate
をTrue
に設定する方が理にかなっていると思います。
INFO
レベルが表示されないのと同じことがありましたが、私の場合(@Benjamin Atkinのレポートも同様)ERROR
は表示されませんでした。
中心的な問題は、この呼び出しであるようです:
Django_heroku.settings(locals())
LOGGING
辞書で設定したカスタムロガーを削除します。
解決策は、これを呼び出しに追加して、ログ設定が混乱しないようにすることです。
Django_heroku.settings(locals(), logging=False)
とにかくこのパッケージは非推奨であるため、使用しないでください。