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 ...
Это прекрасно работает для наблюдения за поведением вашего приложения прямо сейчас. Если вы хотите хранить журналы в течение более длительных периодов времени, вы можете использовать одну из многих надстроек ведения журнала , которые обеспечивают сохранение журнала, оповещения и триггеры.
Наконец, если вы хотите сохранить файлы журналов самостоятельно, вы можете настроить свой собственный syslog сток для получения потока событий от Heroku и последующей обработки / анализа самостоятельно.
Резюме: не используйте heroku console
или heroku run bash
для просмотра статических файлов журнала. Отправьте поток событий журнала Heroku для вашего приложения, используя heroku logs
или надстройку регистрации.