Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails语义记录器标记在升级到4.4.1后停止工作_Ruby On Rails_Ruby_Ruby On Rails 5_Ruby On Rails 5.1 - Fatal编程技术网

Ruby on rails Rails语义记录器标记在升级到4.4.1后停止工作

Ruby on rails Rails语义记录器标记在升级到4.4.1后停止工作,ruby-on-rails,ruby,ruby-on-rails-5,ruby-on-rails-5.1,Ruby On Rails,Ruby,Ruby On Rails 5,Ruby On Rails 5.1,升级前 我使用带有标记的rails\u semantic\u logger来记录请求id和会话id。我在我的日志初始化器中使用了这些标记,它可以添加带有这些id的标记: config.log_tags = [ #:host, #:remote_ip, lambda { |request| "#{request.uuid}"[0..32] }, lambda { |request| "#{request.cookie_jar["_session_

升级前 我使用带有标记的rails\u semantic\u logger来记录请求id和会话id。我在我的日志初始化器中使用了这些标记,它可以添加带有这些id的标记:

  config.log_tags = [
      #:host,
      #:remote_ip,
      lambda { |request| "#{request.uuid}"[0..32] },
      lambda { |request| "#{request.cookie_jar["_session_id"]}" },
  ]
示例日志行:

2019-04-07 13:54:03.563661 I [25929:puma 001] [["a2eb2610-9db1-475b-8d0a-547dc514d", "7713d31653d81aa6d9fe1882c282cc95"]] (499.8ms) DebugController -- Completed #show -- { :controller => "DebugController", :action => "show", :format => "*/*", :method => "GET", :path => "/debug", :status => 200, :view_runtime => 463.81, :rendered_format => :js, :variant => [], :db_runtime => 32.32, :status_message => "OK" }
环境:

  • rails 5.0.4
  • ruby 2.4.2
  • 语义日志4.2.0
  • rails_semantic_loggger 4.1.3
升级后 最近,我将我的环境升级到了rails和gems的新版本(具体版本如下),我无法设置自动标记日志记录。我尝试了一些与命名_标记的组合,如下所示:

  config.log_tags = {
      host:       :host,
      ip:         :remote_ip,
      request_id: :request_id,
      session_id: -> request { request.cookie_jar['_session_id'] }
  }
但它根本不起作用:

2019-04-07 14:19:04.131479 I [23455:puma 001] (394.2ms) DebugController -- Completed #show -- { :controller => "DebugController", :action => "show", :format => "*/*", :method => "GET", :path => "/debug", :status => 200, :view_runtime => 384.13, :db_runtime => 6.99, :status_message => "OK" }

环境: -轨道5.1.7 -ruby 2.4.2 -语义日志4.2.0 -rails_semantic_loggger 4.4.1


我创建了一个示例应用程序来描述这个问题:

版本4.3或4.4的语义记录器需要更早地设置config.log\u标记。它需要在config/[ENV_NAME].rb或application.rb中设置。config/initializers/*.rb中的Initializer太晚了,因为Rails和Rack的记录器之前已经初始化过