refactor: add request_logs methods

it avoids having to change lograge.rb for adding an entry
This commit is contained in:
simon lehericey 2023-11-08 12:19:03 +01:00
parent 52752c95ec
commit 8c0d2bb8cb
7 changed files with 26 additions and 35 deletions

View file

@ -14,10 +14,10 @@ class API::V2::DossiersController < API::V2::BaseController
private private
def append_info_to_payload(payload) def request_logs(logs)
super super
if dossier.present? if dossier.present?
payload.merge!(ds_dossier_id: dossier.id.to_s, ds_procedure_id: dossier.procedure.id.to_s) logs.merge!(ds_dossier_id: dossier.id.to_s, ds_procedure_id: dossier.procedure.id.to_s)
end end
end end

View file

@ -18,10 +18,10 @@ class API::V2::GraphqlController < API::V2::BaseController
private private
def append_info_to_payload(payload) def request_logs(logs)
super super
payload.merge!(@query_info.presence || {}) logs.merge!(@query_info.presence || {})
end end
def process_action(*args) def process_action(*args)

View file

@ -224,23 +224,26 @@ class ApplicationController < ActionController::Base
def append_info_to_payload(payload) def append_info_to_payload(payload)
super super
payload.merge!({ payload[:to_log] = {}
request_logs(payload[:to_log])
end
def request_logs(logs)
logs.merge!({
user_agent: request.user_agent, user_agent: request.user_agent,
user_id: current_user&.id, user_id: current_user&.id,
user_roles: current_user_roles, user_roles: current_user_roles,
client_ip: request.headers['X-Forwarded-For'], client_ip: request.headers['X-Forwarded-For'],
request_id: request.headers['X-Request-ID'] request_id: request.headers['X-Request-ID']
}.compact) })
if browser.known? if browser.known?
payload.merge!({ logs.merge!({
browser: browser.name, browser: browser.name,
browser_version: browser.version.to_s, browser_version: browser.version.to_s,
platform: browser.platform.name platform: browser.platform.name
}) })
end end
payload
end end
def reject def reject

View file

@ -38,21 +38,21 @@ module Manager
def append_info_to_payload(payload) def append_info_to_payload(payload)
super super
payload.merge!({ to_log = {
user_agent: request.user_agent, user_agent: request.user_agent,
user_id: current_user&.id, user_id: current_user&.id,
user_email: current_user&.email user_email: current_user&.email
}.compact) }
if browser.known? if browser.known?
payload.merge!({ to_log.merge!({
browser: browser.name, browser: browser.name,
browser_version: browser.version.to_s, browser_version: browser.version.to_s,
platform: browser.platform.name platform: browser.platform.name
}) })
end end
payload payload[:to_log] = to_log
end end
end end
end end

View file

@ -6,30 +6,18 @@ Rails.application.configure do
# injected by ansible. # injected by ansible.
if !config.lograge.custom_options if !config.lograge.custom_options
config.lograge.custom_options = lambda do |event| config.lograge.custom_options = lambda do |event|
{ hash = {
type: 'tps', type: 'tps',
source: ENV['SOURCE'], source: ENV['SOURCE'],
tags: ['request', event.payload[:exception] ? 'exception' : nil].compact, tags: ['request', event.payload[:exception] ? 'exception' : nil].compact,
user_id: event.payload[:user_id],
user_email: event.payload[:user_email],
user_roles: event.payload[:user_roles],
user_agent: event.payload[:user_agent],
graphql_query: event.payload[:graphql_query],
graphql_variables: event.payload[:graphql_variables],
graphql_null_error: event.payload[:graphql_null_error],
graphql_timeout_error: event.payload[:graphql_timeout_error],
graphql_mutation: event.payload[:graphql_mutation],
ds_procedure_id: event.payload[:ds_procedure_id],
ds_dossier_id: event.payload[:ds_dossier_id],
browser: event.payload[:browser],
browser_version: event.payload[:browser_version],
platform: event.payload[:platform],
client_ip: event.payload[:client_ip],
request_id: event.payload[:request_id],
process: { process: {
pid: Process.pid pid: Process.pid
} }
}.compact }
hash.merge!(event.payload[:to_log])
hash.compact
end end
config.lograge.custom_payload do |controller| config.lograge.custom_payload do |controller|

View file

@ -40,7 +40,7 @@ describe ApplicationController, type: :controller do
[:db_runtime, :view_runtime, :variant, :rendered_format].each do |key| [:db_runtime, :view_runtime, :variant, :rendered_format].each do |key|
payload.delete(key) payload.delete(key)
end end
expect(payload).to eq({ expect(payload[:to_log].compact).to eq({
user_agent: 'Rails Testing', user_agent: 'Rails Testing',
user_roles: 'Guest' user_roles: 'Guest'
}) })
@ -59,7 +59,7 @@ describe ApplicationController, type: :controller do
[:db_runtime, :view_runtime, :variant, :rendered_format].each do |key| [:db_runtime, :view_runtime, :variant, :rendered_format].each do |key|
payload.delete(key) payload.delete(key)
end end
expect(payload).to eq({ expect(payload[:to_log].compact).to eq({
user_agent: 'Rails Testing', user_agent: 'Rails Testing',
user_id: current_user.id, user_id: current_user.id,
user_roles: 'User' user_roles: 'User'
@ -82,7 +82,7 @@ describe ApplicationController, type: :controller do
[:db_runtime, :view_runtime, :variant, :rendered_format].each do |key| [:db_runtime, :view_runtime, :variant, :rendered_format].each do |key|
payload.delete(key) payload.delete(key)
end end
expect(payload).to eq({ expect(payload[:to_log].compact).to eq({
user_agent: 'Rails Testing', user_agent: 'Rails Testing',
user_id: current_user.id, user_id: current_user.id,
user_roles: 'User, Instructeur, Administrateur, SuperAdmin' user_roles: 'User, Instructeur, Administrateur, SuperAdmin'

View file

@ -13,7 +13,7 @@ describe Manager::ApplicationController, type: :controller do
[:db_runtime, :view_runtime, :variant, :rendered_format].each do |key| [:db_runtime, :view_runtime, :variant, :rendered_format].each do |key|
payload.delete(key) payload.delete(key)
end end
expect(payload).to eq({ expect(payload[:to_log]).to eq({
user_agent: 'Rails Testing', user_agent: 'Rails Testing',
user_id: current_user.id, user_id: current_user.id,
user_email: current_user.email user_email: current_user.email