如何通过 OpenSearch 和 Searchkick 集成在 Rails 应用程序中启用日志记录?

问题描述 投票:0回答:1

我的 Rails 应用程序目前使用 Elasticsearch 与 elasticsearch-model 和 elasticsearch-rails gem 进行集成。在 config/initializers/elasticsearch.rb 文件中,我对其进行了如下配置:

config = {
  log: Rails.env.development? ? true : false,
}

Elasticsearch::Model.client = Elasticsearch::Client.new(config)

此设置允许在执行 Elasticsearch::Model.client.search 或批量数据操作等操作时登录 Rails 控制台。

现在,我计划过渡到 OpenSearch 并使用 Searchkick gem。初始化 @client 后,我发现 Searchkick 库代码缺少启用日志记录的选项。这是代码的相关部分:

if client_type == :opensearch
  OpenSearch::Client.new({
    url: ENV["OPENSEARCH_URL"],
    transport_options: { request: { timeout: timeout }, headers: { content_type: "application/json" } },
    retry_on_failure: 2
  }.deep_merge(client_options)) do |f|
    f.use Searchkick::Middleware
    f.request :aws_sigv4, signer_middleware_aws_params if aws_credentials
  end
end

导致我在查询数据时看不到任何日志。

有人可以提供有关如何为开发过程启用日志记录的建议吗?任何帮助将不胜感激。

ruby-on-rails ruby elasticsearch opensearch amazon-opensearch
1个回答
0
投票

如果我没记错的话,你必须使用以下内容创建一个初始化程序

config/initializers/searchkick.rb

Searchkick.client = Elasticsearch::Client.new(url: ENV['ELASTICSEARCH_URL'], log: true)

启用日志记录后,Searchkick 现在会将其与 OpenSearch 的交互记录到 Rails 应用程序的日志文件中。您可以在 Rails 应用程序的 log/ 目录中找到这些日志。

这里是弹性文档。

您还可以调整 Elasticsearch 记录器级别。 例如,要将日志记录级别设置为:debug,您可以修改如下配置:

Searchkick.client.transport.logger.level = Logger::DEBUG

我希望这能解决您的问题

© www.soinside.com 2019 - 2024. All rights reserved.