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? 19 answers
Aktualizacja (Dzięki dawmail333):
heroku logs -n 1500
Lub, aby śledzić dzienniki na żywo
heroku logs -t
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 }
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:)
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.
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
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..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:
- logs domyślnie pobiera 100 linii logów.
heroku logs
- Pokaż maksymalnie 1500 linii, opcja
--num
(lub-n
).
heroku logs -n 200
- Pokaż logi w czasie rzeczywistym
heroku logs --tail
- Jeśli masz wiele aplikacji na heroku
heroku logs --app your_app_name
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.
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
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.
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).
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
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.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.
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.
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):
- 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.
-
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.
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!
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.
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)
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 ...
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