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?
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:
Güncelleme (dawmail333 sayesinde):
heroku logs -n 1500
ya da günlükleri canlandırmak için
heroku logs -t
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 }
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
heroku run rails c
. Güncellenmiş!
heroku run cat log/production.log
?
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 :)
Heroku, günlükleri zaman sıralı olay akışı olarak ele alır. Bu *.log
tü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 console
veya hatta heroku run bash
şu anda çalışan bir dinamoya bağlanmaz. Özellikle bash
komuta 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 console
veya kullanmayın heroku run bash
. Heroku'nun uygulamanız için günlük olayları akışını heroku logs
veya bir günlük eklentisini kullanın.
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..
heroku logs --ps web.1
(1 dinamo ile)
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.
Heroku günlüğünü takip et
Günlüklerinizi görüntülemek için:
heroku logs
--num
(veya -n
) seçeneğini gösterir.
heroku logs -n 200
heroku logs --tail
heroku logs --app your_app_name
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
/usr/bin/less: cannot execute binary files
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.
Kullanmanız -t
veya --tail
seçenek kullanmanız ve heroku uygulama adınızı tanımlamanız gerekir.
heroku logs -t --app app_name
Benim çözüm, uygulama ilk kez, aşağıdaki gibi tam günlük elde etmektir:
heroku logs -n 1500 > log
ardından fgrep -vf
gü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.
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.
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):
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.
İkinci seçenek - Aşağıdaki gibi uygulamanıza eklenti satın alabilirsiniz: (Bu seçenekleri kullanmadım, ancak bunlar kullanılabilir olanlar).
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.
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!
heroku logs -t
bize canlı günlükleri gösterir.
heroku logs -n 1500
belirli 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.
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)
Sedir yığını için bakınız:
https://devcenter.heroku.com/articles/oneoff-admin-ps
koşmanız gerekiyor:
heroku koşmak bash ...
heroku run bash
, bash
komuta 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.