heroku - cara melihat semua log

468

Saya punya aplikasi kecil di heroku. Setiap kali saya ingin melihat log saya pergi ke baris perintah dan lakukan

heroku logs

Itu hanya menunjukkan kepada saya sekitar 100 baris. Apakah tidak ada cara untuk melihat log lengkap untuk aplikasi kita di heroku?

wah
sumber

Jawaban:

785

Pembaruan (terima kasih ke dawmail333):

heroku logs -n 1500

atau, untuk mengikuti log hidup

heroku logs -t 

Dokumentasi heroku log

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 }
Glebm
sumber
5
Ini sekarang tidak berfungsi pada tumpukan cedar. Adakah yang menemukan alternatif baru?
nathanvda
2
Cukup gunakan 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
Liam Dawson
Ini juga tip yang bermanfaat untuk masalah Pipet Aset: log heroku -n 2000 | grep 'precompiled'
Dave Collins
Sebenarnya heroku run rails c. Diperbarui!
glebm
3
Untuk metode lama, mengapa Anda menjalankan konsol rel bukan hanya heroku run cat log/production.log?
Chloe
139

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 :)

nessur
sumber
4
Juga, -n tidak bisa mencapai 1500, saya berasumsi bahwa Heroku hanya memotong apa pun setelah itu.
Liam Dawson
52

Heroku memperlakukan log sebagai aliran peristiwa yang dipesan waktu. Mengakses *.logfile 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 consoleatau bahkan heroku run bashtidak menghubungkan Anda ke dyno yang sedang berjalan. Ini memunculkan yang baru khusus untuk bashperintah. 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 -tperintah 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 consoleatau heroku run bashuntuk melihat file log statis. Pipa ke aliran peristiwa log Heroku untuk aplikasi Anda menggunakan heroku logsatau add-on logging.

Ryan Daigle
sumber
23

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..

Shawn Vader
sumber
5
Untuk melihat hanya log aplikasi saya, saya lakukan: heroku logs --ps web.1(dengan 1 dyno)
Maxence
22

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

tampilan gambar

Aniket Shivam Tiwari
sumber
1
Metode ini hanya menunjukkan kepada Anda keluaran log yang terjadi, mulai dari saat Anda mengklik opsi "Lihat Log". Jadi itu tidak berguna kecuali jika Anda hanya ingin dasarnya log tanpa masuk ke konsol.
Jeremy Gunter
2
apakah tidak ada opsi untuk melihat semua log dari UI ini sendiri?
Sunil Garg
16

Ikuti di Heroku logging

Untuk melihat log Anda, kami memiliki:

  1. perintah log mengambil 100 baris log secara default.

heroku logs

  1. tampilkan maksimal 1500 baris, --num(atau -n) opsi.

heroku logs -n 200

  1. Tampilkan log secara real time

heroku logs --tail

  1. Jika Anda memiliki banyak aplikasi di heroku

heroku logs --app your_app_name

Minh Nguyen
sumber
9

heroku logs -t menunjukkan kepada kami log langsung.

ndrx42
sumber
Tapi itu akan berhenti setelah beberapa saat.
Neeraj Sewani
8

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
Benny Neugebauer
sumber
Saya dapat/usr/bin/less: cannot execute binary files
Michael Fulton
7

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.

clem
sumber
4

untuk file WAR:

Saya tidak menggunakan github, melainkan saya mengunggah langsung, file PERANG (yang saya temukan jauh lebih mudah dan lebih cepat).

Jadi yang berikut membantu saya:

heroku logs --app appname

Semoga ini bisa membantu seseorang.

Ula
sumber
4

Anda perlu menggunakan -tatau --tailopsi dan Anda perlu menentukan nama aplikasi heroku Anda.

heroku logs -t --app app_name
Peter Kota
sumber
4

Solusi saya adalah mendapatkan log lengkap saat pertama kali aplikasi dimulai, seperti:

heroku logs -n 1500 > log

lalu tambahkan fgrep -vfagar 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).

kpsk kpsk
sumber
2

Untuk melihat log terperinci Anda harus meletakkan dua baris dalam production.rbfile:

config.logger = Logger.new(STDOUT)
config.logger.level = Logger::DEBUG

dan kemudian dengan berlari

heroku logs -t

Anda dapat melihat log rinci.

sumit
sumber
2

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.

Ashish Pahwa
sumber
terima kasih, butuh beberapa saat untuk gulir tetapi akhirnya menemukan solusi untuk saya
Meinkraft
2

Anda perlu menerapkan pengeringan log dan harus menguras log Anda di sana, untuk melihat semua log (kelola log historis juga):

  1. Opsi pertama - Splunk dapat digunakan: Anda dapat menguras semua log Anda seperti:
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.

  1. 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).

    • Timber.io
    • Logika Sumo
    • LogEnteries
    • Log DNA
    • Jejak kertas

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.

Vaibhav Sharma
sumber
1

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!

Jose Paez
sumber
1

heroku logs -t menunjukkan kepada kami log langsung. heroku logs -n 1500untuk jumlah log tertentu

Tapi tetap saya akan merekomendasikan untuk menggunakan add-on jejak kertas yang memiliki manfaat tertentu dan memiliki rencana dasar gratis.

svikramjeet
sumber
0

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)

Rohit Sureka
sumber
-2

Untuk tumpukan cedar, lihat:

https://devcenter.heroku.com/articles/oneoff-admin-ps

Anda perlu menjalankan:

heroku menjalankan bash ...

JBN
sumber
9
Di Cedar, heroku run bashberputar sebuah dyno baru untuk menjadi tuan rumah bashperintah. Sistem file pada dyno itu tidak akan berisi file log apa pun dari dinamika web 'aktif' sehingga pendekatan ini tidak akan berfungsi.
Ryan Daigle