【问题标题】:Production log in RoR heroku appRoR heroku 应用程序中的生产日志
【发布时间】:2016-04-20 12:49:26
【问题描述】:

当进行重要的数据库更改时,我有一堆日志记录语句。例如,

def update
  @user = User.find(params[:id])
  if @user.update_attributes(user_params)
    logger.info "INFO -- #{Time.now} -- User #{@user.first_name} #{@user.last_name} (ID: #{@user.id}) updated their profile"
    flash[:success] = "Profile updated"
    redirect_to @user
  else
    render 'edit'
  end
end

我可以通过搜索heroku logs 的输出来获得这些信息,但似乎 heroku 只保留了大约 1000 行日志记录,所以我的语句被推出了。有没有办法将这些保存到文件中,并且只保留“INFO”语句到一定数量的行(比如 10000 行)?

或者,是否可以像“关闭”输出一样

2016-04-20T10:28:52.031573+00:00 app[web.1]:   Role Load (0.8ms)  SELECT "roles".* FROM "roles" INNER JOIN "users_roles" ON "roles"."id" = "users_roles"."role_id" WHERE "users_roles"."user_id" = $1 AND (((roles.name = 'scout') AND (roles.resource_type IS NULL) AND (roles.resource_id IS NULL)))  [["user_id", 135]]
2016-04-20T10:28:52.046090+00:00 app[web.1]:   Role Load (0.8ms)  SELECT "roles".* FROM "roles" INNER JOIN "users_roles" ON "roles"."id" = "users_roles"."role_id" WHERE "users_roles"."user_id" = $1 AND (((roles.name = 'scout') AND (roles.resource_type IS NULL) AND (roles.resource_id IS NULL)))  [["user_id", 143]]
2016-04-20T10:28:52.056567+00:00 app[web.1]:   Rendered layouts/_shim.html.erb (0.1ms)
2016-04-20T10:28:52.060492+00:00 app[web.1]:   Rendered layouts/_footer.html.erb (0.2ms)
2016-04-20T10:28:52.060925+00:00 app[web.1]: Completed 200 OK in 215ms (Views: 167.9ms | ActiveRecord: 41.7ms)
2016-04-20T10:28:52.048956+00:00 app[web.1]:   User Load (0.8ms)  SELECT  "users".* FROM "users" INNER JOIN "relationships" ON "users"."id" = "relationships"."followed_id" WHERE "relationships"."follower_id" = $1  ORDER BY "users"."id" ASC LIMIT 1  [["follower_id", 143]]
2016-04-20T10:28:52.057903+00:00 app[web.1]:   CACHE (0.0ms)  SELECT "roles".* FROM "roles" INNER JOIN "users_roles" ON "roles"."id" = "users_roles"."role_id" WHERE "users_roles"."user_id" = $1 AND (((roles.name = 'admin') AND (roles.resource_type IS NULL) AND (roles.resource_id IS NULL)))  [["user_id", 165]]
2016-04-20T10:28:52.050240+00:00 app[web.1]:   CACHE (0.0ms)  SELECT  "users".* FROM "users" INNER JOIN "relationships" ON "users"."id" = "relationships"."followed_id" WHERE "relationships"."follower_id" = $1  ORDER BY "users"."id" ASC LIMIT 1  [["follower_id", 143]]
2016-04-20T10:28:52.058796+00:00 app[web.1]:   CACHE (0.0ms)  SELECT "roles".* FROM "roles" INNER JOIN "users_roles" ON "roles"."id" = "users_roles"."role_id" WHERE "users_roles"."user_id" = $1 AND (((roles.name = 'der') AND (roles.resource_type IS NULL) AND (roles.resource_id IS NULL)))  [["user_id", 165]]

?

【问题讨论】:

标签: ruby-on-rails logging heroku


【解决方案1】:

heroku 有几个附加组件,可让您将日志重定向到其他地方。但是,您可能要考虑,您认为不重要的输出实际上对于在出现问题时跟踪问题至关重要。虽然“John Doe 更新了他的个人资料”根本不是很有用 - 我的意思是,如果它是恶意的,你会怎么处理?

也可以从日志中看到 users#update 被调用和参数以及它是否有效。

如果您需要在用户编辑资源时进行审核,您可以使用像 papertrail 这样的 gem。

【讨论】:

  • 我一定会去结账的。我有兴趣以明文形式跟踪谁在什么时间做了什么,而不必挖掘那些讨厌的东西。
  • 是的,papertrail 听起来像你想要的。
猜你喜欢
  • 1970-01-01
  • 2016-04-26
  • 1970-01-01
  • 1970-01-01
  • 2019-01-03
  • 2014-04-20
  • 1970-01-01
  • 1970-01-01
  • 2013-08-06
相关资源
最近更新 更多