Class: Pigeon::Logging::StructuredLogger
- Inherits:
-
Object
- Object
- Pigeon::Logging::StructuredLogger
- Defined in:
- lib/pigeon/logging/structured_logger.rb
Overview
Structured logger for Pigeon
Constant Summary collapse
- LEVELS =
Log levels
{ debug: Logger::DEBUG, info: Logger::INFO, warn: Logger::WARN, error: Logger::ERROR, fatal: Logger::FATAL }.freeze
Instance Method Summary collapse
-
#debug(message, context = {}) ⇒ void
Log a debug message.
-
#debug? ⇒ Boolean
Check if debug level is enabled.
-
#error(message, context = {}, error = nil) ⇒ void
Log an error message.
-
#error? ⇒ Boolean
Check if error level is enabled.
-
#fatal(message, context = {}, error = nil) ⇒ void
Log a fatal message.
-
#fatal? ⇒ Boolean
Check if fatal level is enabled.
-
#info(message, context = {}) ⇒ void
Log an info message.
-
#info? ⇒ Boolean
Check if info level is enabled.
-
#initialize(logger = nil, default_context = {}) ⇒ StructuredLogger
constructor
Initialize a new structured logger.
-
#level ⇒ Integer
Get the current log level.
-
#level=(level) ⇒ Integer
Set the log level.
-
#level_enabled?(level) ⇒ Boolean
Check if a log level is enabled.
-
#warn(message, context = {}) ⇒ void
Log a warning message.
-
#warn? ⇒ Boolean
Check if warn level is enabled.
-
#with_context(additional_context) ⇒ StructuredLogger
Create a new logger with additional default context.
Constructor Details
#initialize(logger = nil, default_context = {}) ⇒ StructuredLogger
Initialize a new structured logger
22 23 24 25 |
# File 'lib/pigeon/logging/structured_logger.rb', line 22 def initialize(logger = nil, default_context = {}) @logger = logger || Logger.new($stdout) @default_context = default_context || {} end |
Instance Method Details
#debug(message, context = {}) ⇒ void
This method returns an undefined value.
Log a debug message
52 53 54 |
# File 'lib/pigeon/logging/structured_logger.rb', line 52 def debug(, context = {}) log(:debug, , context) end |
#debug? ⇒ Boolean
Check if debug level is enabled
108 109 110 |
# File 'lib/pigeon/logging/structured_logger.rb', line 108 def debug? level_enabled?(:debug) end |
#error(message, context = {}, error = nil) ⇒ void
This method returns an undefined value.
Log an error message
77 78 79 80 81 82 83 84 85 86 87 |
# File 'lib/pigeon/logging/structured_logger.rb', line 77 def error(, context = {}, error = nil) context = context.dup if error context[:error] = { class: error.class.name, message: error., backtrace: error.backtrace&.take(10) } end log(:error, , context) end |
#error? ⇒ Boolean
Check if error level is enabled
126 127 128 |
# File 'lib/pigeon/logging/structured_logger.rb', line 126 def error? level_enabled?(:error) end |
#fatal(message, context = {}, error = nil) ⇒ void
This method returns an undefined value.
Log a fatal message
94 95 96 97 98 99 100 101 102 103 104 |
# File 'lib/pigeon/logging/structured_logger.rb', line 94 def fatal(, context = {}, error = nil) context = context.dup if error context[:error] = { class: error.class.name, message: error., backtrace: error.backtrace } end log(:fatal, , context) end |
#fatal? ⇒ Boolean
Check if fatal level is enabled
132 133 134 |
# File 'lib/pigeon/logging/structured_logger.rb', line 132 def fatal? level_enabled?(:fatal) end |
#info(message, context = {}) ⇒ void
This method returns an undefined value.
Log an info message
60 61 62 |
# File 'lib/pigeon/logging/structured_logger.rb', line 60 def info(, context = {}) log(:info, , context) end |
#info? ⇒ Boolean
Check if info level is enabled
114 115 116 |
# File 'lib/pigeon/logging/structured_logger.rb', line 114 def info? level_enabled?(:info) end |
#level ⇒ Integer
Get the current log level
37 38 39 |
# File 'lib/pigeon/logging/structured_logger.rb', line 37 def level @logger.level end |
#level=(level) ⇒ Integer
Set the log level
30 31 32 33 |
# File 'lib/pigeon/logging/structured_logger.rb', line 30 def level=(level) level_int = level_to_int(level) @logger.level = level_int end |
#level_enabled?(level) ⇒ Boolean
Check if a log level is enabled
44 45 46 |
# File 'lib/pigeon/logging/structured_logger.rb', line 44 def level_enabled?(level) @logger.level <= level_to_int(level) end |
#warn(message, context = {}) ⇒ void
This method returns an undefined value.
Log a warning message
68 69 70 |
# File 'lib/pigeon/logging/structured_logger.rb', line 68 def warn(, context = {}) log(:warn, , context) end |
#warn? ⇒ Boolean
Check if warn level is enabled
120 121 122 |
# File 'lib/pigeon/logging/structured_logger.rb', line 120 def warn? level_enabled?(:warn) end |
#with_context(additional_context) ⇒ StructuredLogger
Create a new logger with additional default context
139 140 141 |
# File 'lib/pigeon/logging/structured_logger.rb', line 139 def with_context(additional_context) self.class.new(@logger, @default_context.merge(additional_context)) end |