この質問はすでに何度か聞かれていることは知っていますが、うまくいきません。私はすでに数十の組み合わせを試して半日を費やしましたが、今でもまだ機能していません.
私のコードでは、try-except 内や管理コマンドからの情報をログに記録するなど、いくつかの部分でログを記録しています。私は非常に普通のことをしています。それは、いくつかのローカルインストールといくつかの Nginx サーバーで動作しています。
このようなpythonファイル:
import logging
logger = logging.getLogger(__name__)
logger.info('some important infos')
最小限の settings.py として次のようにします (ストリーム表示なしで、ロガーを指定せずに、名前付きロガーを使用して、ほぼすべての可能な組み合わせを試しましたが、はるかに複雑なものも試しました)
LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'handlers': {
'console': {
'level': 'INFO',
'class': 'logging.StreamHandler',
'stream': sys.stdout
}
},
'loggers': {
'django': {
'handlers': ['console'],
'propagate': True,
'level': 'INFO',
},
'': {
'handlers': ['console'],
'level': 'INFO',
}
}
}
次に、シェルから簡単にテストしますheroku run python
import logging
level = logging.INFO
handler = logging.StreamHandler()
handler.setLevel(level)
handler.setFormatter(logging.Formatter('%(levelname)s: %(message)s'))
logger = logging.getLogger('info')
logger.addHandler(handler)
logger.setLevel(level) #even if not required...
logger.info('logging test')
最後のものはコンソールに「print」ステートメントとして表示される場合がありますが、ここでもコマンドまたはサーバーからでも、heroku logs
....には何も表示されません。
編集:実際には、いくつかのエントリが表示されます。次のようなアプリケーションログが表示されますが、私のものではありません:
2013-09-20T15:00:16.405492+00:00 heroku[run.2036]: Process exited with status 0
2013-09-20T15:00:17+00:00 app[heroku-postgres]: source=HEROKU_POSTGRESQL_OLIVE sample[...]
2013-09-20T14:59:47.403049+00:00 heroku[router]: at=info method=GET path=/
2013-09-20T14:59:16.304397+00:00 heroku[web.1]: source=web.1 dyno=heroku [...]
また、いくつかのアドオンを使用してエントリを探してみました。私は最初に newrelic を少し持っていましたが、WSGI の起動時にこれも無効にしました。その時点でうまく機能したかどうかは覚えていませんが、newrelic の無料テスト期間はかなり短くなっています。
他に何を試すことができるかわかりません...ヒントをありがとう