Rails 语义记录器标签在升级到 4.4.1 后停止工作
Rails semantic logger tags stopped working after upgrade to 4.4.1
升级前
我使用 rails_semantic_logger 和标签来记录请求 ID 和会话 ID。我在我的日志记录 initialzier 中添加了带有这些 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
- semantic_logger 4.2.0
- rails_semantic_loggger 4.1.3
升级后
最近我将我的环境升级到更新版本的 rails 和 gems(下面的特定版本)我无法设置自动标记记录。我尝试了一些 named_tags 的组合,如下所示:
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" }
环境:
- rails 5.1.7
- ruby 2.4.2
- semantic_logger 4.2.0
- rails_semantic_loggger 4.4.1
我创建了一个示例应用来描述问题:https://github.com/camaeel/logger-error
4.3 或 4.4 版的语义记录器需要提前设置 config.log_tags。需要在config/[ENV_NAME].rb或application.rb中设置。 config/initializers/*.rb 中的初始化程序太迟了,因为 Rails 和 Rack 的记录器在之前初始化。
升级前 我使用 rails_semantic_logger 和标签来记录请求 ID 和会话 ID。我在我的日志记录 initialzier 中添加了带有这些 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
- semantic_logger 4.2.0
- rails_semantic_loggger 4.1.3
升级后 最近我将我的环境升级到更新版本的 rails 和 gems(下面的特定版本)我无法设置自动标记记录。我尝试了一些 named_tags 的组合,如下所示:
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" }
环境: - rails 5.1.7 - ruby 2.4.2 - semantic_logger 4.2.0 - rails_semantic_loggger 4.4.1
我创建了一个示例应用来描述问题:https://github.com/camaeel/logger-error
4.3 或 4.4 版的语义记录器需要提前设置 config.log_tags。需要在config/[ENV_NAME].rb或application.rb中设置。 config/initializers/*.rb 中的初始化程序太迟了,因为 Rails 和 Rack 的记录器在之前初始化。