heroku-jak zobaczyć wszystkie logi

Mam małą aplikację na heroku. Ilekroć chcę zobaczyć logi, przechodzę do linii poleceń i wykonuję

heroku logs
To pokazuje mi tylko około 100 linijek. Czy nie ma sposobu, aby zobaczyć pełne logi dla naszej aplikacji na heroku?
Author: Edward Castaño, 2010-04-19

19 answers

Aktualizacja (Dzięki dawmail333):

heroku logs -n 1500

Lub, aby śledzić dzienniki na żywo

heroku logs -t 

Heroku log documentation

Jeśli potrzebujesz więcej niż kilka tysięcy linijek możesz użyć heroku Syslog

alternatywnie (stara metoda):

$ heroku run rails c
File.open('log/production.log', 'r').each_line { |line| puts line }
 830
Author: glebm,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-06-14 17:27:09

[2]}w heroku znacznie poprawiło się Logowanie!

$ heroku logs -n 500
Lepiej!
$ heroku logs --tail

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

Aktualizacja

To już nie są dodatki, ale część domyślnej funkcjonalności:)

 142
Author: nessur,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-03-29 17:58:37

Heroku traktuje dzienniki jako uporządkowane w czasie strumienie wydarzeń. Dostęp do plików *.log w systemie plików nie jest zalecany w takim środowisku z wielu powodów.

Po pierwsze, jeśli aplikacja ma więcej niż jeden dyno, to każdy plik dziennika reprezentuje tylko częściowy widok zdarzeń aplikacji. Trzeba by ręcznie połączyć wszystkie pliki, aby uzyskać pełny widok.

Po drugie, system plików na Heroku ma efemeryczne znaczenie, gdy twój dyno zostanie ponownie uruchomiony lub przeniesiony (co dzieje się około raz dziennie ) pliki dziennika są tracone. Więc masz tylko co najwyżej dzień wglądu w dzienniki tej pojedynczej dyno.

Wreszcie, na stosie Cedar uruchomiony heroku console lub nawet heroku run bash nie łączy cię z aktualnie działającym hamowni. Tworzy nową, specjalnie dla komendy bash. Jest to proces jednorazowy . W związku z tym nie znajdziesz plików dziennika dla innych Dynów, które uruchamiają rzeczywiste procesy http na tym, dla którego powstały heroku run.

Logging, i ogólnie widoczność, jest obywatelem pierwszej klasy na Heroku i istnieje kilka narzędzi, które rozwiązują te problemy. Po pierwsze, aby zobaczyć strumień zdarzeń aplikacji w czasie rzeczywistym na wszystkich dynosach i wszystkich warstwach aplikacji/stosu, użyj polecenia heroku logs -t, aby wyświetlić ogonowe wyjście do terminala.

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

To świetnie sprawdza się przy obserwowaniu zachowania Twojej aplikacji w tej chwili. Jeśli chcesz przechowywać dzienniki przez dłuższy czas możesz użyj jednego z wielu dodatków do logowania , które zapewniają przechowywanie dziennika, alarmowanie i wyzwalanie.

Na koniec, jeśli chcesz samodzielnie przechowywać pliki dziennika, możesz skonfigurować swój własny syslog drain , aby odbierać strumień zdarzeń z Heroku i samodzielnie przetwarzać/analizować.

Summary: nie używaj heroku console ani heroku run bash do przeglądania statycznych plików dziennika. Przesyłaj strumień zdarzeń dziennika Heroku do aplikacji za pomocą heroku logs lub dodatku do logowania.

 55
Author: Ryan Daigle,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-04-19 15:43:48

Cóż, powyższe odpowiedzi są bardzo pomocne, pomoże Ci to wyświetlić z linii poleceń. Natomiast jeśli chcesz sprawdzić z GUI, musisz zalogować się na swoje konto Heroku, a następnie wybrać aplikację i na koniec kliknąć na Wyświetl dzienniki obraz

 27
Author: Aniket Shivam Tiwari,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-09-29 16:28:25

Zobacz także poszczególne strumienie / filtry.

Np. tylko dzienniki aplikacji

heroku logs --source app -t

Lub zobacz tylko logi routera

heroku logs --ps router

Lub połączyć je razem

heroku logs --source app --ps worker
Tak dobrze..
 25
Author: Shawn Vader,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-06-20 11:13:00

Follow on Heroku logging

Aby zobaczyć Twoje logi mamy:

  1. logs domyślnie pobiera 100 linii logów.

heroku logs

  1. Pokaż maksymalnie 1500 linii, opcja --num (lub -n).

heroku logs -n 200

  1. Pokaż logi w czasie rzeczywistym

heroku logs --tail

  1. Jeśli masz wiele aplikacji na heroku

heroku logs --app your_app_name

 19
Author: Minh Nguyen,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-04-12 14:20:01

heroku logs -t pokazuje nam dzienniki.

 9
Author: ndrx42,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-12-01 12:13:13

Możesz uzyskać dostęp do swoich plików dziennika za pomocą linii poleceń Heroku Interface ( Cli Usage).

Jeśli jest zainstalowany Cli Heroku i znasz nazwę aplikacji (jak https://myapp.herokuapp.com/), możesz uruchomić następujące polecenie:

heroku logs --tail --app=myapp

Możesz również uzyskać dostęp do dzienników w strumieniu czasu rzeczywistego za pomocą:

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

Jeśli dzienniki mówią coś takiego:

Npm ERR! Pełny dziennik tego biegu można znaleźć w: Npm ERR! / app/npm/_logs / 2017-07-11t08_29_45_291z-debugowanie.log

Następnie możesz również uzyskać do nich dostęp za pomocą terminala bash poprzez Heroku CLI:

heroku run bash --app=myapp
less ./.npm/_logs/2017-07-11T08_29_45_291Z-debug.log
 9
Author: Benny Neugebauer,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-07-11 09:12:39

Może warto dodać coś w rodzaju darmowy plan Papertrail do swojej aplikacji. Zero konfiguracji, a otrzymasz 7 dni wartości rejestrowania danych do 10MB / dzień, i można przeszukiwać wstecz przez 2 dni dzienników.

 7
Author: clem,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-06-14 21:48:07

Moim rozwiązaniem jest uzyskanie pełnego dziennika przy pierwszym uruchomieniu aplikacji, jak:

heroku logs -n 1500 > log

Następnie dodaj fgrep -vf, aby być na bieżąco, jak:

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

Dla ciągłego logowania, wystarczy iterację za pomocą zegarka dla każdego X minut (lub sekund).

 7
Author: kpsk kpsk,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-01-02 08:45:14

Musisz użyć opcji -t lub --tail i zdefiniować nazwę aplikacji heroku.

heroku logs -t --app app_name
 6
Author: Peter Kota,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-10-01 09:59:54

Dla plików wojennych:

Nie używałem Githuba, zamiast tego załadowałem bezpośrednio plik wojenny (który okazał się dużo łatwiejszy i szybszy ).

Tak mi pomogło:

heroku logs --app appname
Mam nadzieję, że to komuś pomoże.
 4
Author: Ula,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-06-20 09:10:23

Aby zobaczyć szczegółowy log należy umieścić dwie linie w pliku production.rb:

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

A następnie uruchamiając

heroku logs -t

Możesz zobaczyć szczegółowe dzienniki.

 2
Author: sumit,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-06-18 08:25:49

Wolę to robić w ten sposób

heroku logs --tail | tee -a herokuLogs

Możesz pozostawić skrypt uruchomiony w tle i możesz po prostu filtrować dzienniki z pliku tekstowego tak, jak chcesz w każdej chwili.

 2
Author: Ashish Pahwa,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-11-19 04:48:45

Musisz mieć zaimplementowane opróżnianie dzienników i powinieneś tam opróżniać swoje dzienniki, aby zobaczyć wszystkie dzienniki (Zarządzaj również dziennikami historycznymi):

  1. pierwsza opcja - Splunk może być użyty: możesz opróżnić wszystkie logi jak:
heroku drains:add syslog+tls://splunk-server.com:514 -a app_name

A następnie zaloguj się na swój serwer splunk i wyszukaj dowolną liczbę logów. Używam Splunk i to działa dla mnie doskonale.

  1. Druga opcja - możesz kupić Dodaj do swojej aplikacji, jak podałem poniżej: (nie korzystałem z tych opcji, jednak te są dostępne).

    • Timber.io
    • Sumo Logic
    • LogEnteries
    • Log DNA
    • Papertrail

Możesz również spojrzeć na poniższe opcje: Jeśli chcesz mieć swój dzienniki w formacie JSON, ponieważ pomoże to, jeśli pchać swoje dzienniki do zewnętrzny system jak Splunk/ELK, stanie się to łatwe (wydajność mądre także) do wyszukiwania w JSON.

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

Nie ma Readme.md, ale niektóre wyjaśnienia podano w https://github.com/goodeggs/bites/issues/20

Wreszcie

I zawsze możesz użyć poniższego polecenia, o którym wspominają już inni użytkownicy:

Następujące polecenie będzie śledziło dzienniki generowania na heroku

heroku logs -t -a <app_name>

Następujący komand pokaże 1000 liczba wierszy kłód z heroku

heroku logs -n 1000 -a <app_name>

Uwaga tylko 1500 ostatnich linii dzienników jest dostępnych, a reszta z nich zostaje usunięta z hamowni heroku.

 2
Author: Vaibhav Sharma,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-09-24 11:19:44

Sugeruję użycie dodatku, używam Logentów. Aby go użyć, uruchom w linii poleceń:

heroku addons:create logentries:le_tryit

(to polecenie tworzy dodatek do DARMOWEGO konta, ale oczywiście możesz go uaktualnić, jeśli chcesz)

Logentries pozwala zaoszczędzić do 5 GB woluminu dziennika miesięcznie. Te informacje można przeszukiwać za pomocą polecenia szukaj w ciągu ostatnich 7 dni i ma alerty w czasie rzeczywistym.

Aby odpowiedzieć na twoje pytanie, używając tego dodatku upewnisz się, że Twoje logi nie zostaną utracone, gdy osiągnij 1500 linii, które Heroku zapisuje domyślnie. Mam nadzieję, że to pomoże! Miłego dnia!

 1
Author: Jose Paez,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-02-21 23:02:56

heroku logs -t pokazuje nam dzienniki. heroku logs -n 1500 dla określonej liczby kłód

Ale nadal polecam użycie dodatku paper trail, który ma pewne zalety i ma bezpłatny plan podstawowy.

 1
Author: svikramjeet,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-04-28 04:55:14

Możesz użyć heroku logs -n 1500

Ale nie jest to zalecane podejście (innymi słowy nie pokazuje prawdziwego obrazu)

Sugerowałbym podłączenie jakiegoś narzędzia do logowania. (sumoLogic, paper trail n all) jako dodatek

Wszystkie mają darmową wersję (z kilkoma ograniczeniami, choć wystarczająca dla małej aplikacji lub dev env, która zapewni dobry wgląd i narzędzie do analizy dzienników)

 0
Author: Rohit Sureka,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-09-19 12:25:25

Dla stosu cedru Patrz:

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

Musisz uruchomić:

Heroku run bash ...

 -2
Author: JBN,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-04-18 21:21:57