Class: RequestLogger
- Inherits:
-
Object
- Object
- RequestLogger
- Defined in:
- app/middleware/request_logger.rb
Overview
Log request and response details for monitoring and high-level profiling.
Returns a JSON parseable log entry like: [INFO] [RequestLogger] "status_message":"OK","duration_ms":935,"client_ip":"172.21.43.210", "request_id":"9fd18098-dea3-46f0-83c8-c41852441db3","tags":["request","success"], "@timestamp":"2026-02-12T12:10:50.284+00:00"
Instance Method Summary collapse
- #call(env) ⇒ Object
-
#initialize(app, log_level: :info, environment_context: nil) ⇒ RequestLogger
constructor
A new instance of RequestLogger.
Constructor Details
#initialize(app, log_level: :info, environment_context: nil) ⇒ RequestLogger
Returns a new instance of RequestLogger.
14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
# File 'app/middleware/request_logger.rb', line 14 do # NOTE: The following attribute is not required for Microarray Genotyping. # I think this might be broken and suggests that there should be separate classes for project: one for # next-gen sequencing that includes this attribute in it's metadata, and one for microarray genotyping # that doesn't. include ProjectManager::Associations include BudgetDivision::Associations custom_attribute(:project_cost_code, required: true) custom_attribute(:funding_comments) custom_attribute(:collaborators) custom_attribute(:external_funding_source) custom_attribute(:sequencing_budget_cost_centre) custom_attribute(:project_funding_model, in: PROJECT_FUNDING_MODELS) custom_attribute(:gt_committee_tracking_id) before_validation do |record| record.project_cost_code = nil if record.project_cost_code.blank? record.project_funding_model = nil if record.project_funding_model.blank? end end |
Instance Method Details
#call(env) ⇒ Object
20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
# File 'app/middleware/request_logger.rb', line 20 do # NOTE: The following attribute is not required for Microarray Genotyping. # I think this might be broken and suggests that there should be separate classes for project: one for # next-gen sequencing that includes this attribute in it's metadata, and one for microarray genotyping # that doesn't. include ProjectManager::Associations include BudgetDivision::Associations custom_attribute(:project_cost_code, required: true) custom_attribute(:funding_comments) custom_attribute(:collaborators) custom_attribute(:external_funding_source) custom_attribute(:sequencing_budget_cost_centre) custom_attribute(:project_funding_model, in: PROJECT_FUNDING_MODELS) custom_attribute(:gt_committee_tracking_id) before_validation do |record| record.project_cost_code = nil if record.project_cost_code.blank? record.project_funding_model = nil if record.project_funding_model.blank? end end |