AJP*_*AJP 5 ruby logging file heroku
我想看看我的应用程序的内容登录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
Run Code Online (Sandbox Code Playgroud)
我知道我有一个完整的日志文件,就像我一样:
heroku logs
Run Code Online (Sandbox Code Playgroud)
列出了所有内容,为什么log/production.log不包含任何内容?我应该用Heroku提交票吗?
谢谢.你的混乱,詹姆斯
Heroku的日志使用logplex存储.您可以阅读有关日志记录系统如何在此处工作的更多信息,但就此问题而言,他们不会production.log在您的应用中写入您的文件,因为Heoku希望尽可能减少应用的代码库.
因此,如果要查看所有日志,则需要将其排放到外部源.
但是,对于观看您的应用和调试,您最多可以读取500行或--tail您的日志,例如:
heroku logs -n 500
heroku addons:upgrade logging:expanded
heroku logs --tail
Run Code Online (Sandbox Code Playgroud)
heroku 插件logging:expanded 不再存在。有些宝石也掩盖了记录器输出,因此对于工作答案,请参阅这个稍微更新的堆栈溢出帖子
总而言之,最好的解决方案是将以下内容添加到您的 config/development.rb 文件中:
config.logger = Logger.new(STDOUT)
config.logger.level = Logger.const_get((ENV["LOG_LEVEL"] || "INFO").upcase)
Run Code Online (Sandbox Code Playgroud)
然后,一旦将其推送到 heroku,您就可以使用以下命令查看所有日志记录:
heroku logs --tail
Run Code Online (Sandbox Code Playgroud)