当前位置:  开发笔记 > 后端 > 正文

在Rails记录器中包含参数/请求信息?

如何解决《在Rails记录器中包含参数/请求信息?》经验,为你挑选了1个好方法。

我试图在我的Rails日志中获取更多信息,特别是请求的URI或当前参数(如果可用)(我感谢他们并不总是这样).但是我似乎无法做到.这是我到目前为止所做的:

#config/environments/production.rb
config.logger = Logger.new(config.log_path)
config.log_level = :error
config.logger.level = Logger::ERROR

#config/environment.rb
class Logger
  def format_message(level, time, progname, msg)
    "**********************************************************************\n#{level} #{time.to_s(:db)} -- #{msg}\n"
  end  
end

所以我可以自定义消息,但我似乎无法在这里访问params/request变量.有谁知道这是否可能,如果是这样的话怎么样?或者,如果有更好的方法来获取此信息?(甚至可能是Redis的基础?)

谢谢你,



1> John Hinnega..:

(在被问到这个问题后很长一段时间回应,但也许它会帮助下一个人.)

我刚做了类似的事.

1)您需要单独覆盖记录器以记录请求级别详细信息.看起来你已经想出了自定义你的记录器了.答案在这里: Rails记录器格式字符串配置

2)我将所有请求的请求和响应记录到我的服务中.请注意,Rails将大量内容放入标题中,因此直接转储请求或标题可能是一个坏主意.另外值得注意的是,我的应用程序主要通过API访问.如果你的主要是一个网络应用程序,因为我猜大多数人都是,你可能不想检查response.body,因为它将包含你的HTML.

class ApplicationController < ActionController::Base 
  around_filter :global_request_logging
...
  def global_request_logging 
    http_request_header_keys = request.headers.keys.select{|header_name| header_name.match("^HTTP.*")}
    http_request_headers = request.headers.select{|header_name, header_value| http_request_header_keys.index(header_name)}
    logger.info "Received #{request.method.inspect} to #{request.url.inspect} from #{request.remote_ip.inspect}.  Processing with headers #{http_request_headers.inspect} and params #{params.inspect}"
    begin 
      yield 
    ensure 
      logger.info "Responding with #{response.status.inspect} => #{response.body.inspect}"
    end 
  end 
end


实际上,当它从`request.headers`更改为`request.headers.env`时,它只适用于我.(我正在使用Rails 4).制作编辑建议.
推荐阅读
吻过彩虹的脸_378
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有