Відповіді:
Оновлення (завдяки 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. Якщо вам потрібно більше рядків, вам потрібен стік syslog: devcenter.heroku.com/articles/logging#syslog_drains
heroku run rails c
. Оновлено!
heroku run cat log/production.log
?
Лісозаготівля значно покращилась у героїку!
$ heroku logs -n 500
Краще!
$ heroku logs --tail
посилання: http://devcenter.heroku.com/articles/logging
ОНОВЛЕНО
Це вже не додатки, а частина функцій за замовчуванням :)
Героку розглядає журнали як упорядковані часом потоки подій. Доступ до *.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
або додаток для журналу.
Також дивіться окремі потоки / фільтри.
Наприклад, лише в журналах програми
heroku logs --source app -t
Або бачити лише журнали маршрутизатора
heroku logs --ps router
Або ланцюжок їх разом
heroku logs --source app --ps worker
Так добре..
heroku logs --ps web.1
(з 1 дино)
Вище наведені відповіді дуже корисні, вони допоможуть вам переглянути з командного рядка. Враховуючи те, що якщо ви хочете зробити це з вашого графічного інтерфейсу, вам доведеться увійти у свій рахунок heroku, а потім вибрати свою програму і, нарешті, натиснути на журнали перегляду
Слідкуйте за журналом Heroku
Для перегляду ваших журналів у нас є:
heroku logs
--num
(або -n
).
heroku logs -n 200
heroku logs --tail
heroku logs --app your_app_name
Ви можете отримати доступ до своїх журналів за допомогою інтерфейсу командного рядка 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
Можливо, варто додати щось подібне до безкоштовного плану 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
для безперервного ведення журналу, просто повторіть його за допомогою годинника кожні х хвилин (або секунди).
Я вважаю за краще це робити так
heroku logs --tail | tee -a herokuLogs
Ви можете залишити сценарій у фоновому режимі, і ви можете просто відфільтрувати журнали з текстового файлу так, як вам потрібно.
Потрібно запровадити кілька каналів для дренажу, і вони повинні бути там, щоб побачити всі журнали (також керуйте історичними журналами):
heroku drains:add syslog+tls://splunk-server.com:514 -a app_name
А потім увійдіть на сервер Splunk та шукайте будь-яку кількість журналів. Я використовую Splunk, і це прекрасно працює для мене.
Другий варіант - Ви можете придбати додавання до свого додатка, як зазначено нижче: (Я не використовував ці параметри, проте це доступні).
Ви також можете ознайомитись із наведеними нижче варіантами: Якщо ви хочете мати свої журнали у форматі 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.
Я пропоную використовувати аддон, я використовую Logentries. Для його використання запустіть у своєму командному рядку:
heroku addons:create logentries:le_tryit
(ця команда створює аддон для безкоштовного акаунта, але чітко ви можете оновити, якщо хочете)
Logentries дозволяє економити до 5 Гб обсягу журналу на місяць. Ця інформація може шукатись за допомогою їх пошуку командами протягом останніх 7 днів, і вона отримує сповіщення в реальному часі.
Отже, щоб відповісти на ваше запитання, використовуючи цей додаток, ви гарантуєте, що ваші журнали більше не втрачаються, коли ви досягнете 1500 рядків, які Heroku зберігає за замовчуванням. Сподіваюся, це допомагає! Хорошого дня!
heroku logs -t
показує нам живі журнали.
heroku logs -n 1500
для конкретної кількості журналів
Але все ж я б рекомендував використовувати надбудову для паперових стежок, яка має певні переваги та має вільний базовий план.
Можна використовувати
heroku logs -n 1500
Але це не рекомендується підхід (інакше кажучи, не показує вам реальної картини)
Я б запропонував вам підключити якийсь інструмент для ведення журналів. (sumoLogic, паперовий слід n all) як доповнення
Усі вони мають безкоштовну версію (з невеликими обмеженнями, хоча достатньо для невеликого додатка чи розробленої програми, що надасть хороший огляд та інструмент для аналізу журналів)
Щодо стека кедра дивіться:
https://devcenter.heroku.com/articles/oneoff-admin-ps
вам потрібно запустити:
heroku run bash ...
heroku run bash
закручується нове дино для розміщення bash
команди. Файлова система цього dyno не міститиме файлів журналу з "активного" веб-диноса, тому такий підхід не працюватиме.