heroku - tüm günlükleri nasıl görebilirim


468

Heroku'da küçük bir uygulamam var. Günlükleri her görmek istediğimde komut satırına gidip

heroku logs

Bu bana sadece yaklaşık 100 satır gösteriyor. Heroku'daki uygulamamız için tam günlükleri görmenin bir yolu yok mu?

Yanıtlar:


785

Güncelleme (dawmail333 sayesinde):

heroku logs -n 1500

ya da günlükleri canlandırmak için

heroku logs -t 

Heroku günlük belgeleri

Birkaç binden fazla satıra ihtiyacınız varsa heroku's Syslog Drains'i kullanabilirsiniz

Alternatif olarak (eski yöntem):

$ heroku run rails c
File.open('log/production.log', 'r').each_line { |line| puts line }

5
Bu şimdi sedir yığını üzerinde çalışmıyor. Yeni bir alternatif bulan var mı?
nathanvda

2
Sadece kullanın heroku logs -n 1500, bu Cedar üzerinde mevcut en iyi yöntemdir. Bundan daha fazla satıra ihtiyacınız varsa, bir sistem günlüğü tahliyesine ihtiyacınız vardır: devcenter.heroku.com/articles/logging#syslog_drains
Liam Dawson

Bu, Varlık Boru Hattı sorunları için de yararlı bir ipucu: heroku günlükleri -n 2000 | grep 'önceden derlenmiş'
Dave Collins

Aslında heroku run rails c. Güncellenmiş!
glebm

3
Eski yöntem için, neden sadece bir ray konsolu çalıştırıyorsunuz heroku run cat log/production.log?
Chloe

139

Heroku'da günlüğe kaydetme büyük ölçüde iyileşti!

$ heroku logs -n 500

Daha iyi!

$ heroku logs --tail

referanslar: http://devcenter.heroku.com/articles/logging

GÜNCELLENMİŞ

Bunlar artık eklenti değil, varsayılan işlevin bir parçasıdır :)


4
Ayrıca, -n 1500'e kadar gidebilir, sanırım Heroku bundan sonra her şeyi kesti.
Liam Dawson

52

Heroku, günlükleri zaman sıralı olay akışı olarak ele alır. Bu *.logtür bir ortamda dosya sistemindeki dosyalara çeşitli nedenlerle erişilmesi önerilmez.

İlk olarak, uygulamanızda birden fazla dyno varsa, her günlük dosyası uygulamanızın olaylarına ilişkin yalnızca kısmi bir görünümü temsil eder. Tam görünümü elde etmek için tüm dosyaları manuel olarak toplamanız gerekir.

İkincisi, Heroku'daki dosya sistemi , günlük dosyalarınız her yeniden başlatıldığında veya taşındığında ( günde yaklaşık bir kez olur) geçici bir anlamdır . Böylece o tek dinamo günlüklerine en fazla bir gün bakabilirsiniz.

Son olarak, Cedar yığınında çalışan heroku consoleveya hatta heroku run bashşu anda çalışan bir dinamoya bağlanmaz. Özellikle bashkomuta için yeni bir tane ortaya çıkarır . Buna tek seferlik süreç denir . Bu nedenle, ortaya çıkan bir bilgisayarda gerçek http işlemlerini çalıştıran diğer dinamolarınızın günlük dosyalarını bulamazsınız heroku run.

Günlüğe kaydetme ve genel olarak görünürlük, Heroku'da birinci sınıf bir vatandaştır ve bu sorunları ele alan birkaç araç vardır. İlk olarak, tüm dinamolar ve uygulamanın / yığının tüm katmanlarındaki gerçek zamanlı uygulama olayları akışını görmek için, heroku logs -tçıkış uçları terminalinize kuyruğa alma komutunu kullanın.

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

Bu, şu anda uygulamanızın davranışını gözlemlemek için harika çalışıyor. Günlükleri daha uzun süre saklamak istiyorsanız, günlük tutma, uyarı ve tetikleyiciler sağlayan birçok günlük tutma eklentisinden birini kullanabilirsiniz .

Son olarak, günlük dosyalarını kendiniz saklamak istiyorsanız , Heroku'dan olay akışını almak ve işlem sonrası / kendinizi analiz etmek için kendi sistem günlüğünüzü düzenleyebilirsiniz.

Özet: Statik günlük dosyalarını görüntülemek için heroku consoleveya kullanmayın heroku run bash. Heroku'nun uygulamanız için günlük olayları akışını heroku logsveya bir günlük eklentisini kullanın.


23

Ayrıca ayrı akışlara / filtrelere bakın.

Örneğin kuyruk sadece uygulama günlükleriniz

heroku logs --source app -t

Veya yalnızca yönlendirici günlüklerine bakın

heroku logs --ps router

Veya onları birlikte zincirleyin

heroku logs --source app --ps worker

Çok iyi..


5
Benim uygulama sadece günlükleri görmek için: heroku logs --ps web.1(1 dinamo ile)
Maxence

22

Yukarıdaki cevaplar çok faydalıdır, komut satırından görüntülemenize yardımcı olacaktır. Oysa GUI'nizden yapmak istiyorsanız, heroku hesabınıza giriş yapmanız ve ardından başvurunuzu seçmeniz ve son olarak günlükleri görüntüle'yi tıklamanız gerekir.

Resim görünümü


1
Bu yöntem, "Günlükleri Görüntüle" seçeneğini tıkladığınız andan başlayarak günlük çıktısını yalnızca gerçekleştikleri gibi gösterir. Bu nedenle, günlükleri konsola girmeden esas olarak kuyruğa almak istemediğiniz sürece yararlı değildir.
Jeremy Gunter

2
bu kullanıcı arayüzünün tüm günlüklerini görme seçeneği yok mu?
Sunil Garg

16

Heroku günlüğünü takip et

Günlüklerinizi görüntülemek için:

  1. logs komutu varsayılan olarak 100 günlük satırı alır.

heroku logs

  1. maksimum 1500 satır, --num(veya -n) seçeneğini gösterir.

heroku logs -n 200

  1. Günlükleri gerçek zamanlı olarak göster

heroku logs --tail

  1. Heroku'da çok sayıda uygulamanız varsa

heroku logs --app your_app_name



8

Günlük dosyalarınıza Heroku'nun Komut Satırı Arabirimi'ni ( CLI Kullanımı ) kullanarak erişebilirsiniz .

Heroku'nun CLI'sı yüklüyse ve uygulama adınızı (gibi https://myapp.herokuapp.com/) biliyorsanız , aşağıdaki komutu çalıştırabilirsiniz:

heroku logs --tail --app=myapp

Gerçek zamanlı akıştaki günlüklere aşağıdakileri kullanarak da erişebilirsiniz:

heroku logs --source app --tail --app=myapp

Günlükler size böyle bir şey söylerse:

npm ERR! Bu çalışmanın tam bir günlüğünü şurada bulabilirsiniz:

npm ERR! /app/.npm/_logs/2017-07-11T08_29_45_291Z-debug.log

Ardından Heroku CLI üzerinden bash terminalini kullanarak da onlara erişebilirsiniz:

heroku run bash --app=myapp
less ./.npm/_logs/2017-07-11T08_29_45_291Z-debug.log

Anladım/usr/bin/less: cannot execute binary files
Michael Fulton

7

Uygulamanıza ücretsiz Papertrail planı gibi bir şey eklemek için buna değer olabilir . Sıfır yapılandırma ve günde 10MB'a kadar 7 günlük günlük kaydı verileri elde edersiniz ve 2 günlük günlükte arama yapabilirsiniz.


4

WAR dosyaları için:

Github kullanmadım, bunun yerine doğrudan bir WAR dosyası yükledim (çok daha kolay ve hızlı buldum).

Böylece aşağıdakiler bana yardımcı oldu:

heroku logs --app appname

Umarım birine yardım eder.


4

Kullanmanız -tveya --tailseçenek kullanmanız ve heroku uygulama adınızı tanımlamanız gerekir.

heroku logs -t --app app_name

4

Benim çözüm, uygulama ilk kez, aşağıdaki gibi tam günlük elde etmektir:

heroku logs -n 1500 > log

ardından fgrep -vfgüncel tutmak için ekleyin , örneğin:

heroku logs -n 1500 > newlog ; fgrep -vf log newlog >> log

sürekli kayıt için her x dakikada (veya saniye) saatinizi kullanarak tekrarlayın.


2

Ayrıntılı günlüğü görmek için production.rbdosyaya iki satır eklemeniz gerekir :

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

ve sonra koşarak

heroku logs -t

detaylı günlükleri görebilirsiniz.


2

Bu şekilde yapmayı tercih ederim

heroku logs --tail | tee -a herokuLogs

Komut dosyasını arka planda çalışır durumda bırakabilirsiniz ve günlükleri metin dosyasından istediğiniz zaman filtreleyebilirsiniz.


teşekkürler, kaydırmam biraz zaman aldı ama sonunda benim için bir çözüm buldu.
Meinkraft

2

Tüm günlükleri görmek için bazı günlüklerin boşaltılması gerekir ve günlüklerinizin orada boşaltılması gerekir (geçmiş günlükleri de yönetin):

  1. İlk seçenek - Splunk kullanılabilir: tüm günlüklerinizi aşağıdaki gibi boşaltabilirsiniz:
heroku drains:add syslog+tls://splunk-server.com:514 -a app_name

Ardından splunk sunucunuza giriş yapın ve istediğiniz sayıda günlük arayın. Splunk kullanıyorum ve bu benim için gayet iyi çalışıyor.

  1. İkinci seçenek - Aşağıdaki gibi uygulamanıza eklenti satın alabilirsiniz: (Bu seçenekleri kullanmadım, ancak bunlar kullanılabilir olanlar).

    • Timber.io
    • Sumo Mantık
    • LogEnteries
    • Log DNA'sı
    • Kağıt izi

Aşağıdaki seçeneklere de göz atabilirsiniz: Günlüklerinizi JSON biçiminde almak istiyorsanız, günlüklerinizi Splunk / ELK gibi harici bir sisteme zorlamanıza yardımcı olacağından, arama yapmak kolay olacaktır (performans açısından da akıllıca olacaktır) JSON.

https://github.com/goodeggs/heroku-log-normalizer

Benioku.md dosyasını içermiyor, ancak https://github.com/goodeggs/bites/issues/20 adresinde bazı açıklamalar verilmiştir.

son olarak

Ve diğer kullanıcılar tarafından belirtildiği gibi aşağıdaki komutu her zaman kullanabilirsiniz:

Aşağıdaki komut heroku üzerinde günlükleri oluşturacak

heroku logs -t -a <app_name>

Aşağıdaki comand, heroku'nun 1000 günlük günlük satırını gösterecek

heroku logs -n 1000 -a <app_name>

Sadece 1500 en son günlük satırı kullanılabilir ve bunların geri kalanı heroku dyno'dan silinir.


1

Bir addon kullanmanızı öneririm, Logentries'i kullanırım. Kullanmak için komut satırınızda çalıştırın:

heroku addons:create logentries:le_tryit

(bu komut ücretsiz bir hesap için eklentiyi oluşturur, ancak açıkça yükseltebilirsiniz)

Logentries, ayda 5 GB'a kadar günlük hacmi kaydetmenizi sağlar. Bu bilgi, son 7 gün içinde komut aramaları ile aranabilir ve gerçek zamanlı uyarılara sahiptir.

Sorunuzu cevaplamak için, bu eklentiyi kullanarak Heroku'nun varsayılan olarak kaydettiği 1500 satıra ulaştığınızda günlüklerinizin kaybolmamasını sağlarsınız. Bu yardımcı olur umarım! İyi günler!


1

heroku logs -t bize canlı günlükleri gösterir. heroku logs -n 1500belirli sayıda günlük için

Ama yine de belirli faydaları olan ve ücretsiz temel planı olan kağıt izi eklentisini kullanmanızı tavsiye ederim.


0

Kullanabilirsiniz heroku logs -n 1500

Ancak bu önerilen bir yaklaşım değildir (başka bir deyişle size gerçek resmi göstermez)

Bazı günlük kayıt aracını takmanızı öneririm. (sumoLogic, kağıt izi n hepsi) eklenti olarak

Hepsinin ücretsiz bir sürümü var (günlükleri analiz etmek için iyi bir fikir ve araç sağlayacak küçük bir uygulama veya dev env için yeterli olsa da, birkaç sınırlama ile)


-2

Sedir yığını için bakınız:

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

koşmanız gerekiyor:

heroku koşmak bash ...


9
On Cedar heroku run bash, bashkomuta ev sahipliği yapmak için yeni bir dinamo çevirir . Bu dyno'daki dosya sistemi, 'etkin' web dinamiklerinden herhangi bir günlük dosyası içermez, bu nedenle bu yaklaşım çalışmaz.
Ryan Daigle
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.