回答:
更新(dawmail333に感謝):
heroku logs -n 1500
または、ログをライブで記録する
heroku logs -t
数千行以上が必要な場合は、herokuのSyslogドレインを使用できます
別の方法(古い方法):
$ heroku run rails c
File.open('log/production.log', 'r').each_line { |line| puts line }
heroku logs -n 1500
、Cedarで使用できる最良の方法です。それ以上の行が必要な場合は、syslogドレインが必要です。devcenter.heroku.com
heroku run rails c
です。更新しました!
heroku run cat log/production.log
?
Herokuではロギングが大幅に改善されました!
$ heroku logs -n 500
いいね!
$ heroku logs --tail
参照:http : //devcenter.heroku.com/articles/logging
更新しました
これらはもはやアドオンではなく、デフォルトの機能の一部です:)
Herokuはログを時間順に並べられたイベントのストリームとして扱います。*.log
このような環境では、さまざまな理由から、ファイルシステム上のファイルへのアクセスは推奨されません。
まず、アプリに複数のdynoがある場合、各ログファイルはアプリのイベントの部分的なビューのみを表します。完全なビューを取得するには、すべてのファイルを手動で集約する必要があります。
第2に、Herokuのファイルシステムは一時的な意味を持ち、dynoが再起動または移動されると(1日1回程度)ログファイルが失われます。したがって、その単一のdynoのログを確認できるのは、せいぜい1日だけです。
最後に、Cedarスタックで実行中heroku console
またはheroku run bash
現在実行中のdynoに接続していません。bash
コマンド専用の新しいものを生成します。これは、1回限りのプロセスと呼ばれます。そのため、で生成されたもので実際のhttpプロセスを実行している他のdynoのログファイルは見つかりませんheroku run
。
ロギングと一般的に可視性は、Herokuの第一級の市民であり、これらの問題に対処するいくつかのツールがあります。まず、アプリケーション/スタックのすべてのdynoとすべてのレイヤーにわたるアプリケーションイベントのリアルタイムストリームを表示するには、heroku 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 ...
これは、アプリケーションの動作を今すぐ観察するのに最適です。ログを長期間保存する場合は、ログの保持、アラート、トリガーを提供する多くのログアドオンのいずれかを使用できます。
最後に、ログファイルを自分で保存する場合は、独自のsyslogドレインを設定して、Herokuからイベントのストリームを受信し、自分で後処理/分析できます。
概要:heroku console
またはheroku run bash
を使用して静的ログファイルを表示しないでください。Herokuのアプリを使用して、heroku logs
またはロギングアドオンのログイベントのストリームにパイプします。
個々のストリーム/フィルターも参照してください。
たとえば、アプリケーションログのみをテールします
heroku logs --source app -t
または、ルーターのログのみを表示する
heroku logs --ps router
またはそれらを一緒にチェーンします
heroku logs --source app --ps worker
とても良い..
heroku logs --ps web.1
(1 dynoで)
さて、上記の回答は非常に役に立ち、コマンドラインから表示するのに役立ちます。一方、GUIから実行する場合は、herokuアカウントにログインしてアプリケーションを選択し、最後に[ログの表示]をクリックする必要があります。
Herokuロギングをフォローする
ログを表示するには:
heroku logs
--num
(または-n
)オプション。
heroku logs -n 200
heroku logs --tail
heroku logs --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
/usr/bin/less: cannot execute binary files
アプリに無料のPapertrailプランなどを追加する価値があるかもしれません。設定不要で、7日間のデータを最大10MB /日まで取得でき、2日間のログを検索できます。
すべてのログを表示するには、いくつかのログの排出を実装する必要があり、そこにログを排出する必要があります(履歴ログも管理します)。
heroku drains:add syslog+tls://splunk-server.com:514 -a app_name
次に、splunkサーバーにログインし、任意の数のログを検索します。私はSplunkを使用していますが、これは完璧に機能しています。
2番目のオプション -以下のように、アプリにアドオンを購入できます(これらのオプションは使用していませんが、使用可能なオプションです)。
また、以下のオプションを確認することもできます。ログをJSON形式にしたい場合は、ログをSplunk / ELKなどの外部システムにプッシュする場合に役立つため、検索が簡単になります(パフォーマンス面でも) JSONで。
https://github.com/goodeggs/heroku-log-normalizer
それはReadme.mdを持っていませんが、いくつかの説明はhttps://github.com/goodeggs/bites/issues/20で与えられています
最後に
そして、他のユーザーがすでに述べたように、いつでも以下のコマンドを使用できます:
次のコマンドは、herokuの生成ログをテールします
heroku logs -t -a <app_name>
次のコマンドは、herokuからの1000行のログ行を表示します
heroku logs -n 1000 -a <app_name>
利用できる最新のログ行は1500行のみで、残りの行はheroku dynoから削除されます。
アドオンの使用をお勧めします。Logentriesを使用します。これを使用するには、コマンドラインで実行します。
heroku addons:create logentries:le_tryit
(そのコマンドは無料のアカウントのアドオンを作成しますが、必要に応じて明らかにアップグレードできます)
Logentriesを使用すると、1か月あたり最大5GBのログボリュームを保存できます。その情報は、過去7日間のコマンド検索で検索可能で、リアルタイムのアラートがあります。
したがって、質問に答えるために、このアドオンを使用して、Herokuがデフォルトで保存する1500行に達したときにログが失われないようにします。お役に立てれば!すてきな一日を!
heroku logs -t
ライブログを表示します。
heroku logs -n 1500
特定の数のログ
しかし、それでも、特定の利点があり、無料の基本計画がある紙の証跡アドオンを使用することをお勧めします。
杉のスタックについては、以下を参照してください:
https://devcenter.heroku.com/articles/oneoff-admin-ps
実行する必要があります:
heroku run bash ...
heroku run bash
では、bash
コマンドをホストするために新しいdynoをスピンアップします。そのdynoのファイルシステムには、「アクティブ」なWeb dynoからのログファイルが含まれないため、このアプローチは機能しません。