2

私の開発環境では、アプリでリクエストを行うと、次のような AREL & SQL クエリが表示されます。

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ログを追跡していheroku logs --tailます。これがその情報を取得する方法です。

Heroku の開発環境と同じタイプのログを取得することはできますか?

ありがとう。

編集:

私のconfig/environment.rb中で私はこれを入れました:

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

私はこれconfig/environment/production.rbを入れます:

config.log_level = :debug
4

3 に答える 3

5

古いスタックでは、Heroku はアプリにプラグインを挿入し、Heroku のセットアップに適合するようにロガーを再構成します。このプラグインは、LOG_LEVEL環境変数を使用して、使用するログ レベルを設定します (アプリの構成にあるものはすべて無視されます)。

その環境変数を DEBUG に更新すると、追加情報が表示されます。

現在のスタックでは、rails_12factorログ出力を Heroku が期待する標準出力にリダイレクトする gem を使用する必要があります。

于 2013-01-02T07:32:38.623 に答える
2

環境ごとの初期化子 ({development,staging,production}.rb) に log_level 設定があります。本番およびステージングでは、コメント化されるか、:info に設定されます。:debug に設定します。

また、追加

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

config/environment.rb の一番下に。

于 2013-01-01T00:36:57.217 に答える
0

以下を production.rb に追加します

config.logger = Logger.new(STDOUT)
于 2013-03-26T11:37:47.480 に答える