Class: Attio::Logger
- Inherits:
-
Logger
- Object
- Logger
- Attio::Logger
- Defined in:
- lib/attio/logger.rb
Overview
Enhanced logger for structured logging with JSON formatting
This logger extends Ruby's standard Logger to provide structured logging with contextual information and JSON output.
Instance Method Summary collapse
- #debug(message, **context) ⇒ Object
- #default_formatter ⇒ Object private
- #error(message, **context) ⇒ Object
- #format_message(message, context) ⇒ Object private
- #info(message, **context) ⇒ Object
-
#initialize(logdev, level: ::Logger::INFO, formatter: nil) ⇒ Logger
constructor
A new instance of Logger.
- #warn(message, **context) ⇒ Object
Constructor Details
#initialize(logdev, level: ::Logger::INFO, formatter: nil) ⇒ Logger
Returns a new instance of Logger.
16 17 18 19 20 |
# File 'lib/attio/logger.rb', line 16 def initialize(logdev, level: ::Logger::INFO, formatter: nil) super(logdev) self.level = level self.formatter = formatter || default_formatter end |
Instance Method Details
#debug(message, **context) ⇒ Object
22 23 24 |
# File 'lib/attio/logger.rb', line 22 def debug(, **context) super((, context)) end |
#default_formatter ⇒ Object (private)
47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 |
# File 'lib/attio/logger.rb', line 47 private def default_formatter proc do |severity, datetime, progname, msg| data = { timestamp: datetime.iso8601, level: severity, progname: progname, } if msg.is_a?(Hash) data.merge!(msg) else data[:message] = msg end "#{JSON.generate(data)}\n" end end |
#error(message, **context) ⇒ Object
34 35 36 |
# File 'lib/attio/logger.rb', line 34 def error(, **context) super((, context)) end |
#format_message(message, context) ⇒ Object (private)
38 39 40 41 42 43 44 45 |
# File 'lib/attio/logger.rb', line 38 private def (, context) return if context.empty? { message: , **context, } end |
#info(message, **context) ⇒ Object
26 27 28 |
# File 'lib/attio/logger.rb', line 26 def info(, **context) super((, context)) end |
#warn(message, **context) ⇒ Object
30 31 32 |
# File 'lib/attio/logger.rb', line 30 def warn(, **context) super((, context)) end |