2011-05-13 60 views
30

我正在用Heroku構建一個應用程序,並遇到一些問題。 我要像我使用Rails服務器做調試一些內容:Heroku調試

logger.debug「...」

我怎樣才能做到這一點在Heroku上,這樣我就可以看到在Heroku的調試日誌? (或其他..)

謝謝!

+0

同樣在這裏,偉大的隊友的問題... – gal 2011-05-13 15:52:56

+0

同樣的問題上雪松堆棧。看來模型中的logger.debug輸出正常。但控制器中的logger.debug不在輸出中。任何人都有更新的信息? – GeorgeW 2012-01-31 23:10:47

回答

20

詳情:http://devcenter.heroku.com/articles/logging

另外,還要確保你設置正確的日誌記錄級別爲您的Rails應用程序: http://blog.sethladd.com/2005/11/adjust-log-level-in-ruby-on-rails.html

+1

一個額外的筆記讓我。如果您使用的是Rails 3.2並且沒有安裝rails_12factor gem,Heroku會插入一個插件rails_log_stdout。這個插件會覆蓋你的記錄器,因此會記錄日誌級別。它將日誌級別設置爲等於ENV var LOG_LEVEL,並且默認爲INFO。因此,您需要運行'heroku config:set LOG_LEVEL = DEBUG'才能正常工作 – 2014-08-25 19:06:34

+0

我也不得不關閉緩衝'$ stdout.sync = true' – Tony 2015-10-01 13:42:46

8

heroku logs將在您的命令行中爲您提供當前應用程序的日誌。如果你有expanded logging打開,您可以尾巴這個輸出這裏

+1

供參考:拖尾顯示您的實時輸出,並通過heroku日誌完成 - 尾 – 2013-11-28 12:30:27

12

在Heroku上雪松堆棧不似乎是響應LOG_LEVEL配置(env)變量適用於以前的堆棧(我使用日誌記錄:擴展插件)。我試着將LOG_LEVEL設置爲debugDEBUG,但都沒有成功。

只有通過在config/environments/production.rb中設置config.log_level = :debug我才能看到'logger.debug'的輸出。

1

要寫信給你在Heroku上的日誌,而不是使用logger.debug "..."只需使用puts

puts "..." 

甚至需要設置config.log_level設置在config/environments/production.rb

See the docs here.

+0

是是是這樣可以工作。只要在需要的地方放一些東西就可以了。謝謝! – Evolve 2012-09-22 07:37:54

+2

是的。然後,當你想要投入生產時,只需刪除這些投入。我沒有想法爲什麼每一種語言用於Web開發都有某種可以設置級別的記錄器類。這似乎是完全無用的! – 2013-11-05 09:41:38

+2

邁克爾,我擔心你的挖苦可能會在Evolve和user664833上丟失 - 顯然,logger類存在的原因是,當你從開發移植到生產時,或者嘗試時不需要刪除(或重新添加)調試錯誤等 - 只需更改log_level即可。 – 2014-01-25 10:11:37

12

已與此戰鬥了很長時間,解決方案是好的和簡單:

坐落在production.rb而不是

config.log_level = :debug 

地方:

config.logger = Logger.new(STDOUT) 
config.logger.level = Logger::DEBUG 

,你會得到完整的日誌輸出。

6

使用Rails 3.2,我們做了這種配置的修改配置/環境/ {環境} .RB從一個環境變量驅動它:

config.log_level = ENV["LOG_LEVEL"].to_sym if ENV["LOG_LEVEL"] 

然後,我們可以修改的Heroku配置變量來改變它:

heroku config:set LOG_LEVEL=debug --app <app name> 

這讓我們可以根據需要輕鬆記錄更多或更少。

5

這爲我工作:

heroku config:set LOG_LEVEL=debug 
+1

這工作。將config.log_level或config.logger.level設置爲debug無效。在控制檯中檢查發現Rails.logger.level始終是默認信息。但是,設置配置變量的確有用。 – Timo 2013-10-23 07:38:42

+0

@TimoLehto懶惰它的'Rails.logger.level = 0'爲:調試級別 – Hengjie 2014-10-16 04:19:37

0
config.log_level = ENV['APP_LOG_LEVEL'] ? ENV['APP_LOG_LEVEL'].to_sym : :error 
+2

請添加更多比只是代碼 – 2017-08-10 12:00:32

+0

你最好解釋你的解釋,而不是隻發佈一些匿名代碼部分。你應該閱讀[我怎麼寫一個好的答案](https://stackoverflow.com/help/how-to-answer) – 2017-08-10 12:18:21