Mam małą aplikację na Heroku. Ilekroć chcę zobaczyć dzienniki, przechodzę do wiersza poleceń i robię to
heroku logs
To pokazuje mi tylko około 100 linii. Czy nie ma sposobu, aby zobaczyć pełne logi dla naszej aplikacji na heroku?
Aktualizacja (dzięki dawmail333):
heroku logs -n 1500
lub, aby ogonić dzienniki na żywo
heroku logs -t
Jeśli potrzebujesz więcej niż kilku tysięcy linii, możesz użyć Syslog Drains heroku
Alternatywnie (stara metoda):
$ heroku run rails c
File.open('log/production.log', 'r').each_line { |line| puts line }
heroku logs -n 1500
, to najlepsza metoda dostępna na Cedrze. Jeśli potrzebujesz więcej linii, potrzebujesz drenażu syslog: devcenter.heroku.com/articles/logging#syslog_drainsheroku run rails c
. Zaktualizowano!heroku run cat log/production.log
?Rejestrowanie znacznie się poprawiło w Heroku!
Lepszy!
referencje: http://devcenter.heroku.com/articles/logging
AKTUALIZACJA
To już nie są dodatki, ale część domyślnej funkcjonalności :)
źródło
Heroku traktuje logi jako uporządkowane czasowo strumienie zdarzeń. Dostęp do
*.log
plików w systemie plików nie jest zalecany w takim środowisku z różnych powodów.Po pierwsze, jeśli twoja aplikacja ma więcej niż jedną hamownię, to każdy plik dziennika reprezentuje tylko częściowy widok zdarzeń Twojej aplikacji. Aby uzyskać pełny widok, musisz ręcznie zagregować wszystkie pliki.
Po drugie, system plików w Heroku ma efemeryczne znaczenie, gdy za każdym razem restartujesz lub przenosisz hamownię (co zdarza się raz dziennie ) pliki dziennika są tracone. Dzięki temu masz najwyżej jednodniowy widok na dzienniki tego pojedynczego hamowni.
Wreszcie, na stosie Cedar działa,
heroku console
a nawetheroku run bash
nie łączy cię z aktualnie uruchomioną dynamiką. Pojawia się nowy specjalnie dla tegobash
polecenia. Jest to nazywane procesem jednorazowym . W związku z tym nie znajdziesz plików dziennika dla innych dynos, które wykonują rzeczywiste procesy http na tym, który został stworzonyheroku run
.Rejestrowanie i ogólnie widoczność jest pierwszorzędnym obywatelem Heroku i istnieje kilka narzędzi, które rozwiązują te problemy. Po pierwsze, aby zobaczyć strumień zdarzeń aplikacji w czasie rzeczywistym dla wszystkich dynos i wszystkich warstw aplikacji / stosu, użyj
heroku logs -t
polecenia, aby dopasować dane wyjściowe do terminala.Działa to doskonale do obserwowania zachowania aplikacji w tej chwili. Jeśli chcesz przechowywać dzienniki przez dłuższy czas, możesz użyć jednego z wielu dodatków do rejestrowania, które zapewniają przechowywanie, alarmowanie i wyzwalanie.
Na koniec, jeśli chcesz samodzielnie przechowywać pliki dziennika, możesz skonfigurować własny drenaż syslog, aby otrzymywać strumień zdarzeń z Heroku i przetwarzać / analizować siebie.
Podsumowanie: Nie używaj
heroku console
aniheroku run bash
do przeglądania statycznych plików dziennika. Dołącz do strumienia zdarzeń dziennika Heroku dla aplikacji za pomocąheroku logs
lub dodatku rejestrującego.źródło
Zobacz także poszczególne strumienie / filtry.
Na przykład przeglądaj tylko dzienniki aplikacji
Lub zobacz tylko dzienniki routera
Lub połącz je razem
Tak dobrze..
źródło
heroku logs --ps web.1
(z 1 dyno)Cóż, powyższe odpowiedzi są bardzo pomocne, pomogą ci zobaczyć z linii poleceń. Natomiast jeśli chcesz to zrobić z GUI, musisz zalogować się na swoje konto heroku, a następnie wybrać aplikację i na koniec kliknąć przeglądać logi
źródło
Śledź rejestrowanie Heroku
Aby wyświetlić twoje logi, mamy:
--num
(lub-n
) opcję.źródło
heroku logs -t
pokazuje nam dzienniki na żywo.źródło
Możesz uzyskać dostęp do swoich plików dziennika za pomocą interfejsu wiersza poleceń Heroku ( użycie CLI ).
Jeśli zainstalowany jest interfejs CLI Heroku i znasz nazwę swojej aplikacji (np.
https://myapp.herokuapp.com/
), Możesz uruchomić następującą komendę:Możesz również uzyskać dostęp do dzienników w strumieniu czasu rzeczywistego, używając:
Jeśli dzienniki mówią coś takiego:
Następnie możesz uzyskać do nich dostęp za pomocą terminalu bash za pośrednictwem interfejsu Heroku CLI:
źródło
/usr/bin/less: cannot execute binary files
Być może warto dodać do swojej aplikacji coś w rodzaju bezpłatnego planu Papertrail . Zero konfiguracji, a otrzymasz 7 dni rejestrowania danych do 10 MB / dzień i możesz przeszukiwać 2 dni dzienników.
źródło
dla plików WAR:
Nie korzystałem z github, zamiast tego przesłałem bezpośrednio plik WAR (który okazał się znacznie łatwiejszy i szybszy).
Więc następujące pomogły mi:
Mam nadzieję, że to komuś pomoże.
źródło
Musisz użyć
-t
lub--tail
opcji i musisz zdefiniować nazwę swojej aplikacji heroku.źródło
Moim rozwiązaniem jest uzyskanie pełnego dziennika przy pierwszym uruchomieniu aplikacji, na przykład:
następnie dodaj,
fgrep -vf
aby być na bieżąco, na przykład:w celu ciągłego logowania wystarczy iterować za pomocą zegarka co x minut (lub sekund).
źródło
Aby zobaczyć szczegółowy dziennik, musisz umieścić dwa wiersze w
production.rb
pliku:a następnie uruchamiając
możesz zobaczyć szczegółowe logi.
źródło
Wolę to robić w ten sposób
Możesz pozostawić skrypt działający w tle i możesz po prostu filtrować dzienniki z pliku tekstowego w dowolny sposób w dowolnym momencie.
źródło
Musisz zaimplementować opróżnianie dzienników i opróżniać je tam, aby zobaczyć wszystkie dzienniki (zarządzaj również dziennikami historycznymi):
A następnie zaloguj się do serwera splunk i wyszukaj dowolną liczbę dzienników. Używam Splunk i działa to dla mnie idealnie.
Druga opcja - możesz kupić dodatek do swojej aplikacji, jak podano poniżej: (Nie korzystałem z tych opcji, ale są one dostępne).
https://github.com/goodeggs/heroku-log-normalizer
Nie ma Readme.md, ale niektóre wyjaśnienia znajdują się na https://github.com/goodeggs/bites/issues/20
W końcu
I zawsze możesz użyć poniższego polecenia, o którym wspominali już inni użytkownicy:
Następujące polecenie spowoduje dopasowanie generowanych dzienników do heroku
Poniższa komenda pokaże 1000 wierszy dzienników z heroku
źródło
Sugeruję użycie dodatku, używam Logentries. 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 je uaktualnić, jeśli chcesz)
Logentries pozwala zaoszczędzić do 5 GB woluminu dziennika na miesiąc. Informacje te można przeszukiwać za pomocą wyszukiwania poleceń w ciągu ostatnich 7 dni i zawiera alerty w czasie rzeczywistym.
Tak więc, aby odpowiedzieć na twoje pytanie, używając tego dodatku upewniasz się, że twoje logi nie są już tracone po osiągnięciu 1500 linii zapisanych domyślnie przez Heroku. Mam nadzieję że to pomoże! Miłego dnia!
źródło
heroku logs -t
pokazuje nam dzienniki na żywo.heroku logs -n 1500
dla określonej liczby dziennikówAle nadal polecam korzystanie z dodatku szlak papieru, który ma pewne zalety i ma bezpłatny plan podstawowy.
źródło
Możesz użyć
heroku logs -n 1500
Ale to nie jest zalecane podejście (innymi słowy nie pokazuje prawdziwego obrazu)
Sugeruję podłączenie jakiegoś narzędzia do logowania. (sumoLogic, ślad papieru n wszystkie) jako dodatek
Wszystkie mają darmową wersję (z kilkoma ograniczeniami, choć wystarczająca do małej aplikacji lub środowiska programistycznego, co zapewni dobry wgląd i narzędzie do analizy dzienników)
źródło
Aby zobaczyć stos cedru, patrz:
https://devcenter.heroku.com/articles/oneoff-admin-ps
musisz uruchomić:
heroku run bash ...
źródło
heroku run bash
uruchamia nową hamownię, aby obsłużyćbash
polecenie. System plików na tym urządzeniu nie będzie zawierał żadnych plików dziennika z „aktywnych” web dynos, więc to podejście nie zadziała.