Heroku生产环境日志文件位置

6
我想在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

我知道我的日志文件已满,因为执行以下命令时会出现这种情况:
heroku logs

所有东西都被列出来了,为什么log/production.log没有任何内容呢? 我应该向Heroku提交工单吗?

谢谢。 疑惑中的你, 詹姆斯

3个回答

7

Heroku的日志使用logplex进行存储。你可以在这里了解更多关于日志系统如何工作的信息,但就这个问题而言,它们不会写入你应用程序中的production.log文件,因为Heroku希望保持应用程序代码库尽可能小。

因此,如果你想查看所有日志,你需要将其排放到外部源中。

但是,为了观察你的应用程序和调试,你可以读取最多500行或者--tail你的日志,例如:

 heroku logs -n 500
 heroku addons:upgrade logging:expanded
 heroku logs --tail

很好。谢谢Codeglot。顺便提醒其他人,您需要“验证”您的Heroku帐户以获取(免费的)扩展日志插件,方法是输入您的信用卡详细信息。不过,Heroku并不会向您收取任何费用。 - AJP
1
有人知道这个问题的最新答案吗?插件已经不存在了,我需要查看development/production.log输出来调试我的部署! - MBHNYC
@MBHNYC请参考用户208769的上面的答案。 - AJP

4

Heroku插件logging:expanded已不再存在。一些gem也会掩盖日志输出,因此要获得有效答案,请参阅这篇稍微更新的Stack Overflow帖子

总结一下,最好的解决方案是在config/production.rb文件中添加以下内容:

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

接着,当你将其推送到heroku后,你可以使用以下命令实时查看所有日志:

heroku logs --tail

0
我也推荐使用Loggly(在Heroku的Add Ons部分中可以找到它)-我是最近成为Heroku用户,所以我不知道这些帖子之后是否添加了Loggly,但绝对是一个更时髦、更易用的替代方案,比通过控制台传输日志更好。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接