Class: Omnitrack::Logger
- Inherits:
-
Object
- Object
- Omnitrack::Logger
- Defined in:
- lib/omnitrack/logger.rb
Overview
Structured JSON logger that writes to a dedicated omnitrack.log file. All public methods are thread-safe (delegating to Ruby’s stdlib Logger).
Constant Summary collapse
- SEVERITY_MAP =
{ debug: ::Logger::DEBUG, info: ::Logger::INFO, warn: ::Logger::WARN, error: ::Logger::ERROR, none: ::Logger::UNKNOWN }.freeze
Instance Method Summary collapse
-
#debug(message, **context) ⇒ Object
——————————————————————- Public logging API ——————————————————————-.
- #error(message, **context) ⇒ Object
- #info(message, **context) ⇒ Object
-
#initialize(log_file:, log_level: :info) ⇒ Logger
constructor
A new instance of Logger.
-
#log_error(adapter:, event:, error:, attempt: nil) ⇒ Object
Convenience: log an adapter error.
-
#log_request(adapter:, event:, payload: {}) ⇒ Object
Convenience: log an adapter request.
-
#log_response(adapter:, event:, status:, body: nil, duration_ms: nil) ⇒ Object
Convenience: log an adapter response.
-
#reopen ⇒ Object
Re-open the log file (useful after logrotate).
- #warn(message, **context) ⇒ Object
Constructor Details
#initialize(log_file:, log_level: :info) ⇒ Logger
Returns a new instance of Logger.
19 20 21 22 23 24 |
# File 'lib/omnitrack/logger.rb', line 19 def initialize(log_file:, log_level: :info) @level = log_level.to_sym @log_file = log_file @backend = build_backend(log_file) apply_level! end |
Instance Method Details
#debug(message, **context) ⇒ Object
Public logging API
30 31 32 |
# File 'lib/omnitrack/logger.rb', line 30 def debug(, **context) write(:debug, , context) end |
#error(message, **context) ⇒ Object
42 43 44 |
# File 'lib/omnitrack/logger.rb', line 42 def error(, **context) write(:error, , context) end |
#info(message, **context) ⇒ Object
34 35 36 |
# File 'lib/omnitrack/logger.rb', line 34 def info(, **context) write(:info, , context) end |
#log_error(adapter:, event:, error:, attempt: nil) ⇒ Object
Convenience: log an adapter error
65 66 67 68 69 70 71 72 73 |
# File 'lib/omnitrack/logger.rb', line 65 def log_error(adapter:, event:, error:, attempt: nil) error("adapter.error", adapter: adapter, event: event, error: error.class.name, message: error., attempt: attempt, backtrace: error.backtrace&.first(5)) end |
#log_request(adapter:, event:, payload: {}) ⇒ Object
Convenience: log an adapter request
47 48 49 50 51 52 |
# File 'lib/omnitrack/logger.rb', line 47 def log_request(adapter:, event:, payload: {}) info("adapter.request", adapter: adapter, event: event, payload: payload) end |
#log_response(adapter:, event:, status:, body: nil, duration_ms: nil) ⇒ Object
Convenience: log an adapter response
55 56 57 58 59 60 61 62 |
# File 'lib/omnitrack/logger.rb', line 55 def log_response(adapter:, event:, status:, body: nil, duration_ms: nil) info("adapter.response", adapter: adapter, event: event, status: status, body: body, duration_ms: duration_ms) end |
#reopen ⇒ Object
Re-open the log file (useful after logrotate)
76 77 78 |
# File 'lib/omnitrack/logger.rb', line 76 def reopen @backend.reopen(@log_file) end |
#warn(message, **context) ⇒ Object
38 39 40 |
# File 'lib/omnitrack/logger.rb', line 38 def warn(, **context) write(:warn, , context) end |