2013-01-01 101 views
2

在我的開發環境,當我讓我的應用程序的請求,我看到了AREL & SQL查詢,像這樣:如何查看Heroku中的詳細日誌,類似於我在開發環境中看到的日誌?

Started GET "/products/20" for 127.0.0.1 at 2012-12-31 19:18:40 -0500 
Processing by ProductsController#show as HTML 
    Parameters: {"id"=>"20"} 
    Category Load (0.2ms) SELECT "categories".* FROM "categories" LIMIT 6 
    Product Load (0.1ms) SELECT "products".* FROM "products" WHERE "products"."id" = ? LIMIT 1 [["id", "20"]] 
    Product Load (0.3ms) SELECT "products".* FROM "products" 
    Vendor Load (0.2ms) SELECT "vendors".* FROM "vendors" WHERE "vendors"."id" = 11 LIMIT 1 
    Product Load (0.2ms) SELECT "products".* FROM "products" WHERE "products"."vendor_id" = 11 
    (0.2ms) SELECT COUNT(*) FROM "categories" INNER JOIN "category_products" ON "categories"."id" = "category_products"."category_id" WHERE "category_products"."product_id" = 20 
    Category Load (0.1ms) SELECT "categories".* FROM "categories" INNER JOIN "category_products" ON "categories"."id" = "category_products"."category_id" WHERE "category_products"."product_id" = 20 
    CACHE (0.0ms) SELECT "vendors".* FROM "vendors" WHERE "vendors"."id" = 11 LIMIT 1 
    CACHE (0.0ms) SELECT "vendors".* FROM "vendors" WHERE "vendors"."id" = 11 LIMIT 1 
    Rendered products/_similar_products.html.erb (6.1ms) 
    Rendered products/show.html.erb within layouts/application (71.2ms) 
    User Load (0.2ms) SELECT "users".* FROM "users" WHERE "users"."id" = 1 LIMIT 1 
    (0.2ms) SELECT COUNT(*) FROM "roles" INNER JOIN "users_roles" ON "roles"."id" = "users_roles"."role_id" WHERE "users_roles"."user_id" = 1 AND (((roles.name = 'superadmin') AND (roles.resource_type IS NULL) AND (roles.resource_id IS NULL))) 
    Rendered layouts/_login_nav.html.erb (5.1ms) 
    Rendered layouts/_navigation.html.erb (0.9ms) 
    Rendered layouts/_header.html.erb (76.4ms) 
    Rendered layouts/_messages.html.erb (0.3ms) 
    Rendered layouts/_footer.html.erb (0.1ms) 
Completed 200 OK in 1171ms (Views: 1160.9ms | ActiveRecord: 1.9ms) 

但是,這是在Heroku上相同的查詢:

2013-01-01T00:24:57+00:00 app[web.1]: Started GET "/products/20" for 67.230.41.62 at 2013-01-01 00:24:57 +0000 
2013-01-01T00:24:58+00:00 heroku[router]: at=info method=GET path=/products/20 host=myapp.herokuapp.com fwd=67.230.41.62 dyno=web.1 queue=0 wait=0ms connect=1ms service=59ms status=200 bytes=7718 

我通過執行heroku logs --tail來追蹤我的Heroku日誌,這就是我得到這些信息的方式。

是否有可能獲得我在Heroku的開發環境中看到的相同類型的日誌?

謝謝。

編輯:

在我config/environment.rb我把這個:

ActiveRecord::Base.logger.level = Logger::DEBUG 

config/environment/production.rb我把這個:

config.log_level = :debug 
+0

請正是你已經把在不同的配置文件中的代碼更新你的答案,所以我們可以看到,可能需要做什麼。 – tehgeekmeister

回答

2

有一個在每個環境初始化一個LOG_LEVEL設置({開發,分期,生產} .RB)。在製作和舞臺中,它會被評論或設置爲:info。將其設置爲:調試。

此外,添加

ActiveRecord::Base.logger.level = Logger::DEBUG 

到你的config/environment.rb文件的底部。

+0

它會立即改變它,還是我必須做些事情來觸發這種變化?據我所知,一旦我推新提交它重新啓動服務器。這應該夠了嗎? – marcamillion

+0

是的,重新啓動就足夠了。 – tehgeekmeister

+0

我問的原因是因爲即使我這樣做,它仍然給我相同的輸出:( – marcamillion

5

在較早的堆棧中,Heroku會在您的應用程序中插入一個插件,以重新配置記錄器以適應Heroku的設置。此插件使用LOG_LEVEL環境變量來設置使用的日誌記錄級別(忽略應用程序配置中的任何內容)

將環境變量更新爲DEBUG,您應該看到額外的信息。

對於當前的堆棧,您應該使用rails_12factor gem,它將日誌輸出重定向到標準輸出,Heroku希望找到它。

+0

D'oh。當我開始工作時,我忘記了我做了這件事。看起來像這樣[這裏](https://github.com/ddollar/rails_log_stdout/blob/master/init.rb#L7)。 – tehgeekmeister

+0

等一下,我想知道它爲什麼適用於我的測試應用程序,然後。要去調查... – tehgeekmeister

+0

rails_12factor寶石工作得很好。 –

0

添加以下production.rb

config.logger = Logger.new(STDOUT)