gpt4 book ai didi

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

转载 作者:数据小太阳 更新时间:2023-10-29 06:37:32 24 4
gpt4 key购买 nike

我正尝试在我的 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

所以我可以很好地自定义消息,但我似乎无法在此处访问参数/请求变量。有谁知道这是否可能,如果可能的话如何?或者是否有更好的方法来获取这些信息? (甚至可能是基于 Redis 的东西?)

谢谢负载,

最佳答案

(在被问到这个问题后回答了很长时间,但也许它会对下一个人有所帮助。)

我刚刚做了类似的事情。

1) 您需要从记录请求级别的详细信息中单独覆盖您的记录器。看起来您已经想好自定义您的记录器了。答案在这里: Rails logger format string configuration

2) 我将所有请求的请求和响应记录到我的服务中。请注意,Rails 将大量内容放入 header 中,因此直接转储请求或 header 可能不是一个好主意。另外值得注意的是,我的应用程序主要是通过 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

关于ruby-on-rails - 在 Rails 记录器中包含参数/请求信息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2667634/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com