我想看到我的应用程序的内容登录heroku.com,所以我跟着this excellent advice并拥有我的所有日志内容。但是我现在很想知道我的日志文件实际上在哪里,因为“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
我知道我有一个完整的日志文件,就像我一样:
heroku logs
列出了所有内容,为什么log / production.log不包含任何内容?我应该使用Heroku提交票证吗?
感谢。 你的混乱, 詹姆斯
答案 0 :(得分:7)
Heroku的日志使用logplex存储。您可以详细了解日志记录系统的工作原理here,但就此问题而言,他们不会写入您应用中的production.log
文件,因为Heoku希望尽可能减少应用的代码库。< / p>
因此,如果您想要查看所有日志,则需要drain将其发送到外部来源。
但是,为了观看您的应用并进行调试,您最多可以阅读500行或--tail
日志,例如:
heroku logs -n 500
heroku addons:upgrade logging:expanded
heroku logs --tail
答案 1 :(得分:4)
heroku addon logging:已扩展不再存在。有些宝石也会屏蔽记录器输出,因此对于工作答案,请参阅this slightly more recent stack overflow post
总而言之,最好的解决方案是将以下内容添加到config / production.rb文件中:
config.logger = Logger.new(STDOUT)
config.logger.level = Logger.const_get((ENV["LOG_LEVEL"] || "INFO").upcase)
然后,一旦你将它推送到heroku,你可以通过以下命令看到所有日志记录:
heroku logs --tail
答案 2 :(得分:0)
我还建议使用Loggly(在Heroku的Add Ons部分找到它) - 我是Heroku的最近用户所以我不知道在这些帖子之后是否添加了Loggly,但它绝对是一个非常狡猾的人,更有用,替代通过控制台管道日志。