heroku - як бачити всі колоди


468

У мене є невеликий додаток на heroku. Щоразу, коли мені хочеться бачити журнали, я переходжу до командного рядка і роблю

heroku logs

Це показує мені лише близько 100 рядків. Хіба немає способу побачити повні журнали нашого додатку на heroku?

Відповіді:


784

Оновлення (завдяки dawmail333):

heroku logs -n 1500

або, щоб хвости колоди жити

heroku logs -t 

Журнальна документація Heroku

Якщо вам потрібно більше , ніж кілька тисяч рядків ви можете використовувати Heroku в Syslog Водостоки

Альтернативно (старий метод):

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

5
Зараз це не працює над кедровим стеком. Хтось знайшов нову альтернативу?
nathanvda

2
Просто використовуйте heroku logs -n 1500, це найкращий метод, доступний на Cedar. Якщо вам потрібно більше рядків, вам потрібен стік syslog: devcenter.heroku.com/articles/logging#syslog_drains
Ліам Доусон

Це також корисна порада для питань Asset Pipeline: журнали heroku -n 2000 | grep 'попередньо складений'
Дейв Коллінз

Це насправді heroku run rails c. Оновлено!
glebm

3
Для старого методу, чому б ви запустили консоль рейки замість просто heroku run cat log/production.log?
Хлоя

139

Лісозаготівля значно покращилась у героїку!

$ heroku logs -n 500

Краще!

$ heroku logs --tail

посилання: http://devcenter.heroku.com/articles/logging

ОНОВЛЕНО

Це вже не додатки, а частина функцій за замовчуванням :)


4
Крім того, -n може піднятися до 1500, я вважаю, що Heroku просто після цього відрізає що-небудь.
Ліам Доусон

52

Героку розглядає журнали як упорядковані часом потоки подій. Доступ до *.logфайлів у файловій системі не рекомендується в таких умовах із різних причин.

По-перше, якщо у вашому додатку є більше одного дина, то кожен файл журналу представляє лише частковий перегляд подій вашої програми. Для повного перегляду вам доведеться вручну агрегувати всі файли.

По-друге, файлова система в Heroku має ефемерне значення при кожному перезапуску або переміщенні дина (що відбувається приблизно раз на день ) файли журналів втрачаються. Таким чином, ви отримуєте лише максимум день перегляду журналів того самого дино.

Нарешті, на стеці Cedar працює heroku consoleабо навіть heroku run bashне підключається до поточного дина. Він породжує нову спеціально для bashкоманди. Це називається разовим процесом . Таким чином, ви не знайдете файлів журналів для інших динових файлів, які виконують фактичні процеси http на одному, для якого створено heroku run.

Ведення журналів та наочність взагалі є першокласним громадянином на Heroku, і є кілька інструментів, які вирішують ці проблеми. По-перше, для перегляду потоку подій додатків у реальному часі для всіх диносів та всіх шарів програми / стека використовуйте heroku logs -tкоманду для виведення хвоста на ваш термінал.

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

Це чудово підходить для спостереження за поведінкою вашої програми зараз. Якщо ви хочете зберігати журнали протягом більш тривалого періоду часу, ви можете використовувати одне з безлічі доповнень для реєстрації журналів, які забезпечують збереження журналу, попередження та тригери.

Нарешті, якщо ви хочете самостійно зберігати файли журналів, ви можете налаштувати власний стік системного журналу, щоб отримувати потік подій від Heroku, і самостійно виконувати процес обробки / аналізу.

Підсумок: Не використовуйте heroku consoleта heroku run bashне переглядайте статичні файли журналів. Вставте в потік журналів події для вашого додатка Heroku heroku logsабо додаток для журналу.


23

Також дивіться окремі потоки / фільтри.

Наприклад, лише в журналах програми

heroku logs --source app -t

Або бачити лише журнали маршрутизатора

heroku logs --ps router

Або ланцюжок їх разом

heroku logs --source app --ps worker

Так добре..


5
Щоб бачити лише журнали моєї програми, я роблю: heroku logs --ps web.1(з 1 дино)
Maxence

22

Вище наведені відповіді дуже корисні, вони допоможуть вам переглянути з командного рядка. Враховуючи те, що якщо ви хочете зробити це з вашого графічного інтерфейсу, вам доведеться увійти у свій рахунок heroku, а потім вибрати свою програму і, нарешті, натиснути на журнали перегляду

зображення зображення


1
Цей метод показує лише вихід журналу у міру їх виникнення, починаючи з моменту натискання на опцію «Переглянути журнали». Тож це не корисно, якщо ви просто не хочете по суті засунути колоди, не заходячи в консоль.
Джеремі Гюнтер

2
чи не існує жодної опції переглянути всі журнали цього інтерфейсу?
Суніл Гарг

16

Слідкуйте за журналом Heroku

Для перегляду ваших журналів у нас є:

  1. Команда logs вилучає 100 рядків журналу за замовчуванням.

heroku logs

  1. показати максимум 1500 рядків --num(або -n).

heroku logs -n 200

  1. Показуйте журнали в режимі реального часу

heroku logs --tail

  1. Якщо у вас є багато додатків на heroku

heroku logs --app your_app_name



8

Ви можете отримати доступ до своїх журналів за допомогою інтерфейсу командного рядка Heroku ( використання CLI ).

Якщо CLI Heroku встановлено, і ви знаєте ім'я своєї програми (наприклад https://myapp.herokuapp.com/), ви можете запустити таку команду:

heroku logs --tail --app=myapp

Ви також можете отримати доступ до журналів у потоці в режимі реального часу, використовуючи:

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

Якщо журнали повідомляють вам щось подібне:

npm ERR! Повний журнал цього запуску можна знайти в:

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

Тоді ви також можете отримати доступ до них за допомогою bash-терміналу через Heroku CLI:

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

Я отримую/usr/bin/less: cannot execute binary files
Майкл Фултон,

7

Можливо, варто додати щось подібне до безкоштовного плану Papertrail у додаток. Нульова конфігурація, і ви отримуєте 7 днів реєстрації даних до 10 Мб / день, і ви можете шукати через 2 дні журналів.


4

для файлів WAR:

Я не використовував github, натомість я завантажив безпосередньо файл WAR (який виявився набагато простіше та швидше).

Тож мені допомогло наступне:

heroku logs --app appname

Сподіваюся, це комусь допоможе.


4

Вам потрібно скористатися -tабо --tailопцією, і вам потрібно визначити своє ім’я програми heroku.

heroku logs -t --app app_name

4

Моє рішення - отримати повний журнал при першому запуску програми, наприклад:

heroku logs -n 1500 > log

потім додайте, fgrep -vfщоб оновити його, як-от:

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

для безперервного ведення журналу, просто повторіть його за допомогою годинника кожні х хвилин (або секунди).


2

Щоб побачити докладний журнал, потрібно помістити у production.rbфайл два рядки :

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

а потім бігом

heroku logs -t

Ви можете побачити докладні журнали.


2

Я вважаю за краще це робити так

heroku logs --tail | tee -a herokuLogs

Ви можете залишити сценарій у фоновому режимі, і ви можете просто відфільтрувати журнали з текстового файлу так, як вам потрібно.


дякую, знадобилося мені трохи часу для прокрутки, але нарешті знайшло рішення для мене.
Meinkraft

2

Потрібно запровадити кілька каналів для дренажу, і вони повинні бути там, щоб побачити всі журнали (також керуйте історичними журналами):

  1. Перший варіант - можна використовувати Splunk: ви можете зливати всі свої журнали, наприклад:
heroku drains:add syslog+tls://splunk-server.com:514 -a app_name

А потім увійдіть на сервер Splunk та шукайте будь-яку кількість журналів. Я використовую Splunk, і це прекрасно працює для мене.

  1. Другий варіант - Ви можете придбати додавання до свого додатка, як зазначено нижче: (Я не використовував ці параметри, проте це доступні).

    • Timber.io
    • Логіка сумо
    • LogEnteries
    • Вхід ДНК
    • Papertrail

Ви також можете ознайомитись із наведеними нижче варіантами: Якщо ви хочете мати свої журнали у форматі JSON, оскільки це допоможе, якщо ваші журнали надсилають до зовнішньої системи, наприклад Splunk / ELK, пошук стане легким (ефективність також потрібна) в JSON.

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

У ньому немає Readme.md, але деякі пояснення наведені на веб-сторінці https://github.com/goodeggs/bites/isissue/20

Нарешті

І ви завжди можете використовувати команду нижче, як уже згадували інші користувачі:

Наступна команда буде хвостиком генеруючі журнали на heroku

heroku logs -t -a <app_name>

Наступна команда покаже 1000 рядків журналів з heroku

heroku logs -n 1000 -a <app_name>

Зверніть увагу, що доступно лише 1500 останніх рядків журналів, а решта з них видаляється з heroku dyno.


1

Я пропоную використовувати аддон, я використовую Logentries. Для його використання запустіть у своєму командному рядку:

heroku addons:create logentries:le_tryit

(ця команда створює аддон для безкоштовного акаунта, але чітко ви можете оновити, якщо хочете)

Logentries дозволяє економити до 5 Гб обсягу журналу на місяць. Ця інформація може шукатись за допомогою їх пошуку командами протягом останніх 7 днів, і вона отримує сповіщення в реальному часі.

Отже, щоб відповісти на ваше запитання, використовуючи цей додаток, ви гарантуєте, що ваші журнали більше не втрачаються, коли ви досягнете 1500 рядків, які Heroku зберігає за замовчуванням. Сподіваюся, це допомагає! Хорошого дня!


1

heroku logs -t показує нам живі журнали. heroku logs -n 1500для конкретної кількості журналів

Але все ж я б рекомендував використовувати надбудову для паперових стежок, яка має певні переваги та має вільний базовий план.


0

Можна використовувати heroku logs -n 1500

Але це не рекомендується підхід (інакше кажучи, не показує вам реальної картини)

Я б запропонував вам підключити якийсь інструмент для ведення журналів. (sumoLogic, паперовий слід n all) як доповнення

Усі вони мають безкоштовну версію (з невеликими обмеженнями, хоча достатньо для невеликого додатка чи розробленої програми, що надасть хороший огляд та інструмент для аналізу журналів)


-2

Щодо стека кедра дивіться:

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

вам потрібно запустити:

heroku run bash ...


9
На Кедрі heroku run bashзакручується нове дино для розміщення bashкоманди. Файлова система цього dyno не міститиме файлів журналу з "активного" веб-диноса, тому такий підхід не працюватиме.
Ryan Daigle
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.