Подтвердить что ты не робот

Heroku - как просмотреть все журналы

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

heroku logs

Это только показывает мне около 100 строк. Разве нет способа увидеть полные журналы для нашего приложения на героку?

4b9b3361

Ответ 1

Обновление (благодаря dawmail333):

heroku logs -n 1500

или, чтобы зажать журналы в реальном времени

heroku logs -t 

Документация журнала Heroku

Если вам нужно больше нескольких тысяч строк, вы можете использовать героя Syslog Drains

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

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

Ответ 2

Ведение журнала значительно улучшилось в герою!

$ heroku logs -n 500

лучше!

$ heroku logs --tail

ссылки: http://devcenter.heroku.com/articles/logging

ОБНОВЛЕНО

Это больше не дополнения, а часть функциональных возможностей по умолчанию:)

Ответ 3

Heroku рассматривает журналы как упорядоченные по времени потоки событий. Доступ к файлам *.log в файловой системе не рекомендуется в такой среде по разным причинам.

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

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

Наконец, в кедровом стеке, работающем под heroku console или даже heroku run bash, вы не подключаетесь к текущему запуску dyno. Он генерирует новую команду специально для команды bash. Это называется одноразовым процессом . Таким образом, вы не найдете файлы журналов для своих других динамиков, на которых запущены фактические HTTP-процессы на сервере, созданном для heroku run.

Logging и видимость в целом, является первоклассным гражданином в 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 ...

Это отлично работает для наблюдения за поведением вашего приложения прямо сейчас. Если вы хотите хранить журналы в течение более длительных периодов времени, вы можете использовать одну из многочисленных надстроек для ведения журнала, которые обеспечивают сохранение, предупреждение и триггеры журнала.

Наконец, если вы хотите сохранить файлы журнала самостоятельно, вы можете настроить свой собственный syslog drain для получения потока событий из Heroku и последующей обработки/анализа самостоятельно.

Сводка. Не используйте heroku console или heroku run bash для просмотра статических файлов журналов. Труба в поток событий журнала Heroku для вашего приложения с помощью heroku logs или надстройки регистрации.

Ответ 4

Также см. отдельные потоки/фильтры.

Например, только ваши журналы приложений

heroku logs --source app -t

Или смотрите только журналы маршрутизатора

heroku logs --ps router

Или соедините их вместе

heroku logs --source app --ps worker

Так хорошо..

Ответ 5

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

image view

Ответ 6

Следуйте за ведение журнала heroku

Для просмотра ваших журналов мы имеем:

  • Команда
  • logs по умолчанию восстанавливает 100 строк журнала.

журналы героя

  1. показать максимум 1500 строк, --num (или -n) вариант.

heroku logs -n 200

  1. Показать журналы в режиме реального времени

heroku logs --tail

  1. Если у вас много приложений на heroku

heroku logs --app your_app_name

Ответ 7

heroku logs -t показывает нам живые журналы.

Ответ 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 через CLI Heroku:

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

Ответ 9

Возможно, стоит добавить что-то вроде бесплатного плана Papertrail в ваше приложение. Нулевую конфигурацию, и вы получаете данные регистрации в течение 7 дней до 10 МБ/день и можете выполнять поиск через 2 дня журналов.

Ответ 10

для файлов WAR:

Я не использовал github, вместо этого я загрузил напрямую файл WAR (который, как мне показалось, намного проще и быстрее).

Так что мне помогло следующее:

heroku logs --app appname

Надеюсь, это кому-нибудь поможет.

Ответ 11

Чтобы просмотреть подробный журнал, вам нужно поместить две строки в файл production.rb:

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

а затем запустив

heroku logs -t

вы можете просмотреть подробные журналы.

Ответ 12

Я предпочитаю делать это таким образом

heroku logs --tail | tee -a herokuLogs

Вы можете оставить script запущенным в фоновом режиме, и вы можете просто фильтровать журналы из текстового файла так, как вы хотите в любое время.

Ответ 13

Мое решение - получить полный журнал при первом запуске приложения, например:

heroku logs -n 1500 > log

затем добавьте fgrep -vf, чтобы обновить его, например:

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

для непрерывного ведения журнала, просто повторите его, используя часы на каждые x минут (или секунд).

Ответ 14

Вам нужно использовать -t или --tail и вам нужно определить имя вашего приложения heroku.

heroku logs -t --app app_name

Ответ 15

Я предлагаю использовать аддон, я использую Logentries. Чтобы использовать его, запустите в командной строке:

heroku addons:create logentries:le_tryit

(эта команда создает аддон для бесплатной учетной записи, но вы можете обновить ее, если хотите)

Logentries позволяет сэкономить до 5 ГБ объема журнала в месяц. Эта информация доступна для поиска по команде поиска в течение последних 7 дней, и она имеет оповещения в режиме реального времени.

Поэтому, чтобы ответить на ваш вопрос, используя это дополнение, вы гарантируете, что ваши журналы больше не будут потеряны, когда вы достигнете 1500 строк, которые Heroku сохраняет по умолчанию. Надеюсь это поможет! Хорошего дня!

Ответ 16

heroku logs -t показывают нам живые логи. heroku logs -n 1500 для определенного количества бревен

Но все же я бы порекомендовал использовать надстройку бумажного следа, которая имеет определенные преимущества и имеет бесплатный базовый план.

Ответ 17

Вы можете использовать heroku logs -n 1500

Но это не рекомендуемый подход (другими словами, не показывает реальную картину)

Я хотел бы предложить вам подключить некоторые средства ведения журнала. (sumoLogic, весь документ) как дополнение

Все они имеют бесплатную версию (с небольшими ограничениями, хотя этого достаточно для небольшого приложения или dev env, что обеспечит хорошее понимание и инструмент для анализа журналов)

Ответ 18

Вам нужно внедрить некоторые операции очистки журналов, и там должны быть очищены ваши журналы, чтобы увидеть все журналы (также управлять историческими журналами):

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

А затем войдите в свой дополнительный сервер и найдите любое количество журналов. Я использую Splunk, и это прекрасно работает для меня.

  1. Второй вариант - вы можете приобрести надстройку для своего приложения, как показано ниже: (я не использовал эти опции, но они доступны).

    • Timber.io
    • Сумо Логика
    • LogEnteries
    • Лог ДНК
    • Papertrail

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

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

У него нет Readme.md, но некоторые пояснения даются на https://github.com/goodeggs/bites/issues/20

Наконец

И вы всегда можете использовать приведенную ниже команду, как уже упоминалось другими пользователями:

Следующая команда будет привязывать генерирующие логи к герою

heroku logs -t -a <app_name>

Следующая команда покажет 1000 строк логов из heroku

heroku logs -n 1000 -a <app_name>

Обратите внимание, что доступно только 1500 последних строк журналов, а остальные из них удаляются из heroku dyno.