私はherokuに小さなアプリを持っています。ログを見たいときはいつでもコマンドラインに行き、
heroku logs
それは私に約100行しか表示されません。 herokuで私たちのアプリケーションの完全なログを見る方法はありませんか?
更新(ありがとうdawmail333):
heroku logs -n 1500
または、ログを生き生きとさせるために
heroku logs -t
数千行以上必要な場合は、herokuの Syslog Drain を使用できます。
代わりに(古い方法):
$ heroku run Rails c
File.open('log/production.log', 'r').each_line { |line| puts line }
Herokuでロギングが大幅に向上しました!
$ heroku logs -n 500
もっといいね!
$ heroku logs --tail
参照: http://devcenter.heroku.com/articles/logging
更新
これらはもはやアドオンではなく、デフォルトの機能の一部です:)
Herokuはログをイベントの時系列ストリームとして扱います。ファイルシステム上の*.log
ファイルにアクセスすることは、さまざまな理由からそのような環境ではお勧めできません。
まず、アプリに複数のdynoがある場合、各ログファイルはアプリのイベントに対する部分的なビューのみを表します。全画面を表示するには、すべてのファイルを手動で集計する必要があります。
第二に、Herokuのファイルシステムはあなたのdynoが再起動されたり移動されたりした時(それは一日に一回 に起こる) ログファイルが失われるという一時的な意味です。だから、あなたはせいぜい1日のビューでその単一のdynoのログを見ることしかできません。
最後に、 Cedarスタック でheroku console
、さらにはheroku run bash
を実行しても、現在実行中のdynoに接続できません。 bash
コマンド専用の新しいものが生成されます。これは 1回限りのプロセス と呼ばれます。そのため、heroku run
用に生成されたもので実際のhttpプロセスを実行している他のdynosのログファイルは見つかりません。
ロギング 、および一般的な可視性は、Herokuの第一級の市民であり、これらの問題に対処するツールがいくつかあります。まず、すべてのdynosとアプリケーションのすべてのレイヤーにまたがるアプリケーションイベントのリアルタイムストリームを確認するには、/ stackheroku logs -t
コマンドを使用して出力を端末に合わせます。
$ heroku logs -t
2010-09-16T15:13:46-07:00 app[web.1]: Processing PostController#list (for 208.39.138.12 at 2010-09-16 15:13:46) [GET]
2010-09-16T15:13:46-07:00 app[web.1]: Rendering template within layouts/application
2010-09-16T15:13:46-07:00 heroku[router]: GET myapp.heroku.com/posts queue=0 wait=0ms service=1ms bytes=975
2010-09-16T15:13:47-07:00 app[worker.1]: 2 jobs processed at 16.6761 j/s, 0 failed ...
これはあなたのアプリケーションの振る舞いを今観察するのに非常に役立ちます。ログを長期間保存する場合は、ログの保存、警告、およびトリガーを提供する多数の ログ記録アドオン のいずれかを使用できます。
最後に、ログファイルを自分で保存したい場合は、Herokuからイベントのストリームを受信して後処理/分析するように独自の syslogドレイン を設定することができます。あなた自身。
要約:静的ログファイルを表示するためにheroku console
またはheroku run bash
を使用しないでください。 heroku logs
またはロギングアドオンを使用して、Herokuのアプリのログイベントのストリームにパイプインします。
個々のストリーム/フィルタも見てください。
あなたのアプリケーションログだけを残す
heroku logs --source app -t
またはルータのログだけを見る
heroku logs --ps router
またはそれらを一緒にチェーン
heroku logs --source app --ps worker
とても良い..
続けて heroku logging
あなたのログを見るために、我々は持っています:
herokuログ
heroku logs -n 200
heroku logs --tail
herokuログ--app your_app_name
ログファイルにアクセスするには、Herokuのコマンドラインインタフェース( CLIの使用法 )を使用します。
HerokuのCLIがインストールされていて、自分のアプリケーション名(https://myapp.herokuapp.com/
など)がわかっている場合は、次のコマンドを実行できます。
heroku logs --tail --app=myapp
以下を使用してリアルタイムストリームでログにアクセスすることもできます。
heroku logs --source app --tail --app=myapp
ログがあなたにこのようなことを言っているなら:
npm ERR!この実行の完全なログは、次の場所にあります。
npm ERR! /app/.npm/_logs/2017-07-11T08_29_45_291Z-debug.log
それから、Heroku CLI経由でbash端末を使ってそれらにアクセスすることもできます。
heroku run bash --app=myapp
less ./.npm/_logs/2017-07-11T08_29_45_291Z-debug.log
heroku logs -t
は私たちにライブログを表示します。
あなたのアプリに 無料のPapertrailプラン のようなものを追加する価値があるかもしれません。ゼロ設定で、7日分のデータを最大10MB /日まで記録でき、2日分のログを検索できます。
wARファイルの場合
私はgithubを使用しませんでした。その代わりにWARファイルを直接アップロードしました。
それで、以下は私を助けました:
heroku logs --app appname
誰かに役立つことを願っています。
詳細なログを見るには、production.rb
ファイルに2行を入れる必要があります。
config.logger = Logger.new(STDOUT)
config.logger.level = Logger::DEBUG
そして実行することで
heroku logs -t
詳細なログを見ることができます。
私の解決策は、次のように、アプリケーションの初回起動時に完全なログを取得することです。
heroku logs -n 1500 > log
それからそれを最新に保つためにfgrep -vf
を追加してください:
heroku logs -n 1500 > newlog ; fgrep -vf log newlog >> log
連続的なロギングのためには、x分(または秒)ごとにwatchを使ってそれを繰り返すだけです。
私はこうするのが好きです
heroku logs --tail | tee -a herokuLogs
スクリプトをバックグラウンドで実行したままにして、テキストファイルからログをいつでも好きな方法でフィルタ処理することができます。
あなたは-t
または--tail
オプションを使う必要があり、あなたはあなたのherokuアプリ名を定義する必要があります。
heroku logs -t --app app_name
アドオンを使うことをお勧めします。私はLogentriesを使います。それを使用するには、あなたのコマンドラインで実行してください:
heroku addons:create logentries:le_tryit
(このコマンドは無料アカウントのアドオンを作成しますが、必要に応じてアップグレードできることは明らかです)
Logentriesを使用すると、月に最大5GBのログ容量を節約できます。その情報は過去7日以内に彼らのコマンド検索によって検索可能であり、それはリアルタイムのアラートを持っています。
質問に答えるには、このアドオンを使用することで、Herokuがデフォルトで保存する1500行に達したときにログが失われないようにします。お役に立てれば!すてきな一日を!
heroku logs -t
は私たちにライブログを表示します。特定の数のログのheroku logs -n 1500
それでも私は特定の利点があり、無料の基本計画があるペーパートレイルアドオンを使用することをお勧めします。