Jawaban:
Pembaruan (terima kasih ke dawmail333):
heroku logs -n 1500
atau, untuk mengikuti log hidup
heroku logs -t
Jika Anda membutuhkan lebih dari beberapa ribu baris, Anda dapat Menggunakan Syslog Drain heroku
Atau (metode lama):
$ heroku run rails c
File.open('log/production.log', 'r').each_line { |line| puts line }
heroku logs -n 1500
, ini metode terbaik yang tersedia di Cedar. Jika Anda membutuhkan lebih banyak baris dari itu, Anda memerlukan saluran syslog: devcenter.heroku.com/articles/logging#syslog_drains
heroku run rails c
. Diperbarui!
heroku run cat log/production.log
?
Penebangan telah meningkat pesat di heroku!
$ heroku logs -n 500
Lebih baik!
$ heroku logs --tail
referensi: http://devcenter.heroku.com/articles/logging
DIPERBARUI
Ini bukan lagi add-on, tetapi bagian dari fungsi default :)
Heroku memperlakukan log sebagai aliran peristiwa yang dipesan waktu. Mengakses *.log
file pada sistem file tidak dianjurkan dalam lingkungan seperti itu karena berbagai alasan.
Pertama, jika aplikasi Anda memiliki lebih dari satu dyno maka setiap file log hanya mewakili sebagian tampilan peristiwa aplikasi Anda. Anda harus mengumpulkan semua file secara manual untuk mendapatkan tampilan penuh.
Kedua, sistem file di Heroku adalah makna sementara kapan pun dino Anda dihidupkan ulang atau dipindahkan (yang terjadi sekitar sekali sehari ) file log hilang. Jadi, Anda hanya dapat melihat paling banyak satu hari ke dalam log dino tunggal itu.
Akhirnya, pada Cedar stack yang berjalan heroku console
atau bahkan heroku run bash
tidak menghubungkan Anda ke dyno yang sedang berjalan. Ini memunculkan yang baru khusus untuk bash
perintah. Ini disebut proses satu kali . Dengan demikian, Anda tidak akan menemukan file log untuk dino Anda yang lain yang menjalankan proses http aktual pada yang ditelurkan heroku run
.
Penebangan , dan visibilitas secara umum, adalah warga negara kelas satu di Heroku dan ada beberapa alat yang menangani masalah ini. Pertama, untuk melihat aliran waktu-nyata dari peristiwa aplikasi di semua dino dan semua lapisan aplikasi / tumpukan gunakan heroku logs -t
perintah untuk mengikuti keluaran ke terminal Anda.
$ 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 ...
Ini berfungsi baik untuk mengamati perilaku aplikasi Anda sekarang. Jika Anda ingin menyimpan log untuk periode waktu yang lebih lama, Anda dapat menggunakan salah satu dari banyak add-on logging yang menyediakan retensi, peringatan, dan pemicu log.
Terakhir, jika Anda ingin menyimpan file log sendiri, Anda dapat mengatur drain syslog Anda sendiri untuk menerima aliran acara dari Heroku dan pasca-proses / analisis sendiri.
Ringkasan: Jangan gunakan heroku console
atau heroku run bash
untuk melihat file log statis. Pipa ke aliran peristiwa log Heroku untuk aplikasi Anda menggunakan heroku logs
atau add-on logging.
Lihat juga aliran / filter individual.
Misalnya ekor hanya log aplikasi Anda
heroku logs --source app -t
Atau hanya melihat log router
heroku logs --ps router
Atau rantai mereka bersama
heroku logs --source app --ps worker
Sangat baik..
heroku logs --ps web.1
(dengan 1 dyno)
Yah jawaban di atas sangat membantu itu akan membantu Anda untuk melihat dari baris perintah. Sedangkan jika Anda ingin melakukannya dari GUI Anda maka Anda harus masuk ke akun heroku Anda dan kemudian pilih aplikasi Anda dan akhirnya klik pada log tampilan
Ikuti di Heroku logging
Untuk melihat log Anda, kami memiliki:
heroku logs
--num
(atau -n
) opsi.
heroku logs -n 200
heroku logs --tail
heroku logs --app your_app_name
heroku logs -t
menunjukkan kepada kami log langsung.
Anda dapat mengakses file log menggunakan Antarmuka Baris Perintah Heroku ( Penggunaan CLI ).
Jika Heroku's CLI diinstal dan Anda tahu nama aplikasi Anda (seperti https://myapp.herokuapp.com/
), maka Anda dapat menjalankan perintah berikut:
heroku logs --tail --app=myapp
Anda juga dapat mengakses log dalam aliran waktu nyata menggunakan:
heroku logs --source app --tail --app=myapp
Jika log memberi tahu Anda sesuatu seperti ini:
npm ERR! Log lengkap dari proses ini dapat ditemukan di:
npm ERR! /app/.npm/_logs/2017-07-11T08_29_45_291Z-debug.log
Kemudian Anda juga dapat mengaksesnya menggunakan terminal bash melalui Heroku CLI:
heroku run bash --app=myapp
less ./.npm/_logs/2017-07-11T08_29_45_291Z-debug.log
/usr/bin/less: cannot execute binary files
Mungkin layak untuk menambahkan sesuatu seperti paket Papertrail gratis ke aplikasi Anda. Tanpa konfigurasi, dan Anda mendapatkan data logging selama 7 hari hingga 10MB / hari, dan dapat mencari kembali melalui 2 hari log.
Anda perlu menggunakan -t
atau --tail
opsi dan Anda perlu menentukan nama aplikasi heroku Anda.
heroku logs -t --app app_name
Solusi saya adalah mendapatkan log lengkap saat pertama kali aplikasi dimulai, seperti:
heroku logs -n 1500 > log
lalu tambahkan fgrep -vf
agar tetap terbarui, seperti:
heroku logs -n 1500 > newlog ; fgrep -vf log newlog >> log
untuk pencatatan terus menerus, cukup lakukan iterasi menggunakan arloji untuk setiap x menit (atau detik).
Saya lebih suka melakukannya dengan cara ini
heroku logs --tail | tee -a herokuLogs
Anda dapat membiarkan skrip tetap berjalan di latar belakang dan Anda cukup menyaring log dari file teks seperti yang Anda inginkan kapan saja.
Anda perlu menerapkan pengeringan log dan harus menguras log Anda di sana, untuk melihat semua log (kelola log historis juga):
heroku drains:add syslog+tls://splunk-server.com:514 -a app_name
Dan kemudian login ke server splunk Anda dan cari sejumlah log. Saya menggunakan Splunk dan ini berfungsi dengan baik untuk saya.
Opsi kedua - Anda dapat membeli add on ke Aplikasi Anda, seperti yang diberikan di bawah ini: (Saya belum menggunakan opsi ini, namun ini adalah yang tersedia).
Anda juga dapat melihat opsi di bawah ini: Jika Anda ingin log Anda dalam format JSON, karena ini akan membantu jika Anda mendorong log Anda ke sistem eksternal seperti Splunk / ELK, itu akan menjadi mudah (kinerja juga bijaksana) untuk mencari dalam JSON.
https://github.com/goodeggs/heroku-log-normalizer
Ini tidak memiliki Readme.md, tetapi beberapa penjelasan diberikan di https://github.com/goodeggs/bites/issues/20
akhirnya
Dan Anda selalu dapat menggunakan perintah di bawah ini sebagaimana disebutkan oleh pengguna lain:
Perintah berikut akan mengekor log penghasil pada heroku
heroku logs -t -a <app_name>
Perintah berikut ini akan menunjukkan jumlah 1000 baris log dari heroku
heroku logs -n 1000 -a <app_name>
Catat hanya 1500 baris log terbaru yang tersedia dan sisanya dihapus dari heroku dyno.
Saya sarankan menggunakan addon, saya menggunakan Logentries. Untuk menggunakannya, jalankan di baris perintah Anda:
heroku addons:create logentries:le_tryit
(perintah itu membuat addon untuk akun gratis tetapi jelas Anda bisa memutakhirkan jika mau)
Logentries memungkinkan Anda menghemat hingga 5GB volume log per bulan. Info itu dapat dicari dengan pencarian perintah mereka dalam 7 hari terakhir dan memiliki peringatan waktu nyata.
Jadi untuk menjawab pertanyaan Anda, dengan menggunakan addon ini Anda memastikan bahwa log Anda tidak hilang lagi ketika Anda mencapai 1500 baris yang disimpan Heroku secara default. Semoga ini membantu! Semoga hari mu menyenangkan!
heroku logs -t
menunjukkan kepada kami log langsung.
heroku logs -n 1500
untuk jumlah log tertentu
Tapi tetap saya akan merekomendasikan untuk menggunakan add-on jejak kertas yang memiliki manfaat tertentu dan memiliki rencana dasar gratis.
Kamu bisa menggunakan
heroku logs -n 1500
Tapi ini bukan pendekatan yang disarankan (dengan kata lain tidak menunjukkan gambaran sebenarnya)
Saya sarankan Anda pasang beberapa alat logging. (sumoLogic, jejak kertas n semua) sebagai add-on
Mereka semua memiliki versi gratis (dengan beberapa batasan, meskipun cukup untuk aplikasi kecil atau pengembang, yang akan memberikan wawasan dan alat yang baik untuk menganalisis log)
Untuk tumpukan cedar, lihat:
https://devcenter.heroku.com/articles/oneoff-admin-ps
Anda perlu menjalankan:
heroku menjalankan bash ...
heroku run bash
berputar sebuah dyno baru untuk menjadi tuan rumah bash
perintah. Sistem file pada dyno itu tidak akan berisi file log apa pun dari dinamika web 'aktif' sehingga pendekatan ini tidak akan berfungsi.