2013-03-13 54 views
1

我們切換到獨角獸,但失去了Heroku上的所有應用程序日誌記錄。我搜索了一下,學習了Heroku的Ruby buildpack安裝了一個插件「rails_log_stdout」,這對Unicorn來說並不好。我的猜測是這與獨角獸的分叉性質有關,但我沒有證實。在Heroku上支持Unicorn的「官方」方式是什麼,不會丟失日誌?

建議使用https://gist.github.com/jamiew/2227268等其他解決方法。這些讓我感到不滿意,因爲它們不會使用Rails應用程序中定義的日誌級別或任何標記,或者記錄器格式覆蓋等。這對我來說似乎有點蠻橫的力量。什麼是「正式」的方式來做到這一點?

+1

昨天晚上我跟着https://blog.heroku.com/archives/2013/2/27/unicorn_rails,我可以看到日誌通過很好。 – 2013-03-14 08:34:38

+0

什麼版本的鐵軌和獨角獸?我將應用程序切換到獨角獸並仍然可以看到我的日誌 – catsby 2013-03-14 12:48:58

+0

我們使用的是Rails 3.2.11和Unicorn 4.6.2。我不得不重新實例化production.rb文件中的記錄器。然後我開始工作。 感謝鏈接到Heroku的帖子。那是在我們做這件事後幾天寫的,但我們已經有了基本的結構,並沒有提到任何有關伐木的事情。 – 2013-03-14 19:36:16

回答

1

這就是我如何重新實例化記錄器以避免丟失日誌記錄級別或登錄標記。我不得不在每個環境文件分開爲此,production.rbstaging.rb(如果有的話),等等。

MyApp::Application.configure do 

    # ... 

    logger = Logger.new(STDOUT) 
    logger = ActiveSupport::TaggedLogging.new(logger) if defined?(ActiveSupport::TaggedLogging) 
    config.logger = logger 
    log_level_env_override = Logger.const_get(ENV['LOG_LEVEL'].try(:upcase)) rescue nil 
    config.logger.level = log_level_env_override || Logger.const_get(Rails.configuration.log_level.to_s.upcase) 

    # ... 

end 

我不愛這個。我希望有更優雅的東西烘焙到獨角獸中。

相關問題