У меня есть небольшое приложение на героку. Всякий раз, когда я хочу увидеть логи, я иду в командную строку и делаю
heroku logs
Это показывает только около 100 строк. Нет ли способа посмотреть полные логи нашего приложения на героку?
У меня есть небольшое приложение на героку. Всякий раз, когда я хочу увидеть логи, я иду в командную строку и делаю
heroku logs
Это показывает только около 100 строк. Нет ли способа посмотреть полные логи нашего приложения на героку?
Ответы:
Обновление (спасибо dawmail333):
heroku logs -n 1500
или, чтобы вести журналы в прямом эфире
heroku logs -t
Если вам нужно больше , чем несколько тысяч строк вы можете использовать Heroku в Syslog Водостоки
Альтернативно (старый метод):
$ heroku run rails c
File.open('log/production.log', 'r').each_line { |line| puts line }
heroku logs -n 1500
, это лучший метод, доступный на Cedar. Если вам нужно больше строк, вам понадобится утечка системного журнала
heroku run rails c
. Обновлено!
heroku run cat log/production.log
?
Лагерь значительно улучшился в героку!
$ heroku logs -n 500
Лучше!
$ heroku logs --tail
ссылки: http://devcenter.heroku.com/articles/logging
ОБНОВЛЕНО
Это уже не надстройки, а часть функциональности по умолчанию :)
Heroku рассматривает журналы как упорядоченные по времени потоки событий. Доступ к *.log
файлам в файловой системе не рекомендуется в такой среде по разным причинам.
Во-первых, если в вашем приложении более одного dyno, то каждый файл журнала представляет только частичное представление событий вашего приложения. Вы должны вручную объединить все файлы, чтобы получить полное представление.
Во-вторых, файловая система в Heroku является эфемерной, то есть всякий раз, когда ваш dyno перезапускается или перемещается (что происходит примерно раз в день ), файлы журнала теряются. Таким образом, вы получаете только дневной обзор журналов этого динамо.
Наконец, в стеке Cedar работает heroku console
или даже heroku run bash
не соединяет вас с в настоящее время работает dyno. Он порождает новый специально для bash
команды. Это называется одноразовым процессом . Таким образом, вы не найдете файлы журналов для других ваших dyno, на которых запущены реальные http-процессы на том, для которого они созданы heroku run
.
Ведение журнала и обзор в целом является первоклассным гражданином в Heroku, и существует несколько инструментов для решения этих проблем. Во-первых, чтобы увидеть поток событий приложения в реальном времени через все dyno и все уровни приложения / стека, используйте 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
помощью надстройки для регистрации.
Также смотрите отдельные потоки / фильтры.
Например, хвост только журналы вашего приложения
heroku logs --source app -t
Или посмотреть только логи роутера
heroku logs --ps router
Или связать их вместе
heroku logs --source app --ps worker
Так хорошо..
heroku logs --ps web.1
(с 1 dyno)
Ну, приведенные выше ответы очень полезны, это поможет вам просматривать из командной строки. Принимая во внимание, что если вы хотите сделать это из своего графического интерфейса, вы должны войти в свою учетную запись heroku, а затем выбрать приложение и, наконец, нажать на просмотр журналов.
Следуйте в журнале Heroku
Для просмотра ваших логов у нас есть:
heroku logs
--num
(или -n
) вариант.
heroku logs -n 200
heroku logs --tail
heroku logs --app your_app_name
heroku logs -t
показывает нам живые журналы.
Вы можете получить доступ к своим файлам журнала, используя интерфейс командной строки Heroku ( использование CLI ).
Если CLI Heroku установлен и вы знаете имя своего приложения (например https://myapp.herokuapp.com/
), то вы можете выполнить следующую команду:
heroku logs --tail --app=myapp
Вы также можете получить доступ к журналам в режиме реального времени, используя:
heroku logs --source app --tail --app=myapp
Если логи говорят вам что-то вроде этого:
нпм ERR! Полный журнал этого прогона можно найти в:
нпм 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
Может быть, стоит добавить что-то вроде бесплатного плана Papertrail в ваше приложение. Нулевая конфигурация, и вы получаете данные за 7 дней до 10 МБ / день, и можете искать через 2 дня журналов.
Вам нужно использовать -t
или --tail
опцию, и вам нужно определить имя вашего приложения heroku.
heroku logs -t --app app_name
Мое решение - получить полный журнал при первом запуске приложения, например:
heroku logs -n 1500 > log
затем добавьте, fgrep -vf
чтобы поддерживать его в актуальном состоянии, например:
heroku logs -n 1500 > newlog ; fgrep -vf log newlog >> log
для непрерывного ведения журнала просто повторяйте его, используя часы каждые x минут (или секунд).
Я предпочитаю делать это так
heroku logs --tail | tee -a herokuLogs
Вы можете оставить скрипт запущенным в фоновом режиме и просто отфильтровывать логи из текстового файла так, как вам хочется в любое время.
Вам нужно внедрить некоторые операции очистки журналов, и там должны быть очищены ваши журналы, чтобы увидеть все журналы (также управлять историческими журналами):
heroku drains:add syslog+tls://splunk-server.com:514 -a app_name
А затем войдите в свой сервер Spunk и найдите любое количество журналов. Я использую Splunk, и это прекрасно работает для меня.
Второй вариант - вы можете приобрести надстройку для своего приложения, как указано ниже: (я не использовал эти опции, но они доступны).
Вы также можете взглянуть на следующие варианты: если вы хотите, чтобы ваши журналы были в формате 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.
Я предлагаю использовать аддон, я использую Logentries. Чтобы использовать его, запустите в командной строке:
heroku addons:create logentries:le_tryit
(эта команда создает аддон для бесплатной учетной записи, но вы можете обновить ее, если хотите)
Logentries позволяет сохранить до 5 ГБ объема журнала в месяц. Эта информация доступна для поиска по команде поиска в течение последних 7 дней, и она имеет оповещения в режиме реального времени.
Поэтому, чтобы ответить на ваш вопрос, используя это дополнение, вы гарантируете, что ваши журналы больше не будут потеряны, когда вы достигнете 1500 строк, которые Heroku сохраняет по умолчанию. Надеюсь это поможет! Хорошего дня!
heroku logs -t
показывает нам живые журналы.
heroku logs -n 1500
для определенного количества бревен
Но все же я бы порекомендовал использовать надстройку бумажного следа, которая имеет определенные преимущества и имеет бесплатный базовый план.
Ты можешь использовать
heroku logs -n 1500
Но это не рекомендуемый подход (другими словами, не показывает реальную картину)
Я хотел бы предложить вам подключить некоторые средства ведения журнала. (sumoLogic, бумага все) в качестве дополнения
Все они имеют бесплатную версию (с небольшими ограничениями, хотя этого достаточно для небольшого приложения или dev env, что обеспечит хорошее понимание и инструмент для анализа журналов)
Для стека кедра см .:
https://devcenter.heroku.com/articles/oneoff-admin-ps
вам нужно запустить:
геройку беги баш ...
heroku run bash
раскручивается новый динамо для размещения bash
команды. Файловая система в этом dyno не будет содержать никаких файлов журналов от «активных» веб-dyno, поэтому этот подход не будет работать.