Class: Makit::Logging::FormatRegistry

Inherits:
Object
  • Object
show all
Defined in:
lib/makit/logging/format_registry.rb

Overview

Registry for managing available log formatters

Provides a centralized way to register, retrieve, and manage formatters by name. This allows for easy extension and configuration of formatters.

Examples:

Registering a custom formatter

FormatRegistry.register(:audit, AuditFormatter)
formatter = FormatRegistry.get(:audit).new

Using built-in formatters

formatter = FormatRegistry.get(:json).new
formatter = FormatRegistry.get(:text).new(timestamp_format: "%H:%M:%S")

Class Attribute Summary collapse

Class Method Summary collapse

Class Attribute Details

.formattersHash (readonly)



22
23
24
# File 'lib/makit/logging/format_registry.rb', line 22

def formatters
  @formatters
end

Class Method Details

.available_formatsArray<Symbol>

Get all available formatter names



45
46
47
# File 'lib/makit/logging/format_registry.rb', line 45

def available_formats
  @formatters.keys
end

.clearvoid

This method returns an undefined value.

Clear all registered formatters



60
61
62
# File 'lib/makit/logging/format_registry.rb', line 60

def clear
  @formatters.clear
end

.get(name) ⇒ Class

Get a formatter class by name

Raises:

  • (ArgumentError)

    if formatter is not found



38
39
40
# File 'lib/makit/logging/format_registry.rb', line 38

def get(name)
  @formatters[name.to_sym] || raise(ArgumentError, "Unknown formatter: #{name}")
end

.register(name, formatter_class) ⇒ void

This method returns an undefined value.

Register a formatter class with a name



29
30
31
# File 'lib/makit/logging/format_registry.rb', line 29

def register(name, formatter_class)
  @formatters[name.to_sym] = formatter_class
end

.register_built_insvoid

This method returns an undefined value.

Register built-in formatters



67
68
69
70
71
72
73
74
75
76
77
# File 'lib/makit/logging/format_registry.rb', line 67

def register_built_ins
  require_relative "formatters/json_formatter"
  require_relative "formatters/text_formatter"
  require_relative "formatters/plain_text_formatter"
  require_relative "formatters/console_formatter"

  register(:json, Formatters::JsonFormatter)
  register(:text, Formatters::TextFormatter)
  register(:plain, Formatters::PlainTextFormatter)
  register(:console, Formatters::ConsoleFormatter)
end

.registered?(name) ⇒ Boolean

Check if a formatter is registered



53
54
55
# File 'lib/makit/logging/format_registry.rb', line 53

def registered?(name)
  @formatters.key?(name.to_sym)
end