ruby-on-rails - Rails 日志中的完整 URL

标签 ruby-on-rails ruby logging dns hostname

是否可以在 Rails 应用程序的日志中获取完整的 URL?目前我得到类似的东西:

Started GET "/" for 127.0.0.1 at 2011-08-27 13:13:10 +0200

但我需要得到:

Started GET "http://localhost:3000/" for 127.0.0.1 at 2011-08-27 13:13:10 +0200

因为这是一款域名很重要的应用。

最佳答案

该行来自中间件 Rails::Rack::Logger ,这是在 railties 中。最简单的情况是,您可以覆盖执行日志记录的方法,例如,在初始化程序中:

class Rails::Rack::Logger < ActiveSupport::LogSubscriber
  protected

  def before_dispatch(env)
    request = ActionDispatch::Request.new(env)
    info "\n\nStarted #{request.request_method} \"#{request.url}\" for #{request.ip} at #{Time.now.to_default_s}"
  end
end

如果您不想覆盖记录器,您可以随时添加您自己的记录器,您已经创建了它,然后通过以下方式从堆栈中删除 Rails::Rack::Logger:

config.middleware.insert_before(Rails::Rack::Logger, YourLogger)
config.middleware.delete(Rails::Rack::Logger)

如果你走这条路,你可能会检查 rack logger 以了解它对 ActionDispatch::Request 的使用,并确保完成它所做的其他工作,即在发送后刷新日志订阅者缓存,通过 ActiveSupport::LogSubscriber.flush_all!

关于ruby-on-rails - Rails 日志中的完整 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7214166/

相关文章:

Ruby 搜索树示例混淆

java - Log4j 找不到记录器的附加程序 (org.apache.hadoop.util.shell)

java - log4j2 配置记录到文件但不记录到控制台

ruby-on-rails - NoMethodError : undefined method `to_csv' for ["a", "b"]:数组

ios - Rails Devise OmniAuth Facebook 从 iOS 登录

ruby-on-rails - rails I8n : Use default locale when the requested locale (from HTTP header) is not available?

c# - 通过改变不同的构造函数类型来选择特定类型的结构图配置

ruby-on-rails - 类似 Rails 的数据库迁移?

ruby - github boxen 可以在 mac os 10.7 (Lion) 上运行吗

Ruby on Rails,从另一个实例变量的属性创建实例变量