Class: Servus::Support::Logger
- Inherits:
-
Object
- Object
- Servus::Support::Logger
- Defined in:
- lib/servus/support/logger.rb
Overview
Logger class for logging service calls and results
Class Method Summary collapse
-
.log_call(service_class, args) ⇒ Object
Logs a call to a service.
-
.log_event(event_name, payload, event_id:, duration_ms:) ⇒ Object
Logs an event emission with correlation ID and duration.
-
.log_exception(service_class, exception) ⇒ Object
Logs an uncaught exception from a service.
-
.log_failure(service_class, error, duration) ⇒ Object
Logs a failed result from a service.
-
.log_guard_failure(service_class, error) ⇒ Object
Logs a guard failure from a service.
-
.log_parameters(params) ⇒ Hash
Filters parameters for logging based on the configured filter list.
-
.log_result(service_class, result, duration) ⇒ Object
Logs a result from a service.
-
.log_success(service_class, duration) ⇒ Object
Logs a successful result from a service.
-
.log_validation_error(service_class, error) ⇒ Object
Logs a validation error from a service.
-
.logger ⇒ Logger
Returns the logger instance depending on the environment.
Class Method Details
.log_call(service_class, args) ⇒ Object
Logs a call to a service.
When Config#log_filter_parameters is configured, matching
argument values are replaced with [FILTERED] before logging. With
the default empty list, arguments are logged verbatim.
28 29 30 31 |
# File 'lib/servus/support/logger.rb', line 28 def self.log_call(service_class, args) rendered = log_parameters(args) logger.info("Calling #{service_class.name} with args: #{rendered.inspect}") end |
.log_event(event_name, payload, event_id:, duration_ms:) ⇒ Object
Logs an event emission with correlation ID and duration.
77 78 79 |
# File 'lib/servus/support/logger.rb', line 77 def self.log_event(event_name, payload, event_id:, duration_ms:) logger.info("[#{event_id}] Event :#{event_name} (#{duration_ms.round(1)}ms) #{payload.inspect}") end |
.log_exception(service_class, exception) ⇒ Object
Logs an uncaught exception from a service
93 94 95 |
# File 'lib/servus/support/logger.rb', line 93 def self.log_exception(service_class, exception) logger.error("#{service_class.name} uncaught exception: #{exception.class} - #{exception.}") end |
.log_failure(service_class, error, duration) ⇒ Object
Logs a failed result from a service
59 60 61 |
# File 'lib/servus/support/logger.rb', line 59 def self.log_failure(service_class, error, duration) logger.warn("#{service_class.name} failed in #{duration.round(3)}s with error: #{error}") end |
.log_guard_failure(service_class, error) ⇒ Object
Logs a guard failure from a service
67 68 69 |
# File 'lib/servus/support/logger.rb', line 67 def self.log_guard_failure(service_class, error) logger.warn("#{service_class.name} guard failed: #{error.}") end |
.log_parameters(params) ⇒ Hash
Filters parameters for logging based on the configured filter list.
101 102 103 104 105 106 107 |
# File 'lib/servus/support/logger.rb', line 101 def self.log_parameters(params) if Servus.config.log_filter_parameters.empty? params else Servus.config.parameter_filter.filter(params) end end |
.log_result(service_class, result, duration) ⇒ Object
Logs a result from a service
38 39 40 41 42 43 44 |
# File 'lib/servus/support/logger.rb', line 38 def self.log_result(service_class, result, duration) if result.success? log_success(service_class, duration) else log_failure(service_class, result.error, duration) end end |
.log_success(service_class, duration) ⇒ Object
Logs a successful result from a service
50 51 52 |
# File 'lib/servus/support/logger.rb', line 50 def self.log_success(service_class, duration) logger.info("#{service_class.name} succeeded in #{duration.round(3)}s") end |
.log_validation_error(service_class, error) ⇒ Object
Logs a validation error from a service
85 86 87 |
# File 'lib/servus/support/logger.rb', line 85 def self.log_validation_error(service_class, error) logger.error("#{service_class.name} validation error: #{error.}") end |
.logger ⇒ Logger
Returns the logger instance depending on the environment
12 13 14 15 16 17 18 |
# File 'lib/servus/support/logger.rb', line 12 def self.logger if defined?(Rails) && Rails.respond_to?(:logger) && Rails.logger Rails.logger else @logger ||= ::Logger.new($stdout) end end |