Расположение файла Heroku production.log - PullRequest
5 голосов
/ 25 июля 2011

Я хотел, чтобы содержимое моего приложения регистрировалось на сайте heroku.com, поэтому я следовал этому прекрасному совету и получил все содержимое моего журнала.Однако теперь мне любопытно узнать, где мой файл журнала на самом деле, так как «log / production.log» кажется пустым:

C:\>heroku console
Ruby console for ajpbrevx.heroku.com
>> files = Dir.glob("*")
=> ["public", "tmp", "spec", "Rakefile", "doc", "config.ru", "app", "config", "lib", "README", "Gemfile.lock", "vendor", "script", "Gemfile", "log"]
>> files = Dir.glob("log/*")
=> ["log/production.log"]
>> log_file = File.open("log/production.log", "r")
=> #<File:log/production.log>
>> log_file.each_line { |line| puts line }
=> #<File:log/production.log>
>> log_file.lstat.size
=> 0

Я знаю, что у меня есть полный файл журнала, как тогда, когда я:1006 *

heroku logs

все перечислено, так почему log / production.log ничего не содержит?Должен ли я подать билет с Heroku ?

Спасибо.Ваш в замешательстве, Джеймс

Ответы [ 3 ]

7 голосов
/ 25 июля 2011

Журналы Heroku хранятся с использованием logplex .Вы можете прочитать больше о том, как работает система ведения журнала здесь , но с точки зрения этого вопроса они не пишут в ваш файл production.log в вашем приложении, потому что Heoku хочет, чтобы кодовая база приложения была как можно меньше.

Поэтому, если вы хотите просмотреть все свои журналы, вам нужно слить его во внешний источник.

Но для просмотра вашего приложения и отладки вы можете прочитать до 500линии или --tail ваши журналы, такие как:

 heroku logs -n 500
 heroku addons:upgrade logging:expanded
 heroku logs --tail
4 голосов
/ 03 ноября 2014

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

Подводя итог, самое хорошее решение - добавить следующее в ваш config / production.rbfile:

config.logger = Logger.new(STDOUT)
config.logger.level = Logger.const_get((ENV["LOG_LEVEL"] || "INFO").upcase)

Затем, как только вы нажмете это на heroku, вы сможете увидеть все записи в журнале, как это происходит с помощью следующей команды:

heroku logs --tail
0 голосов
/ 09 ноября 2012

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...