class EventLoggerRails::EventLogger
Outputs event and related data logs.
Constants
- DEFAULT_EVENTS
Attributes
last_updated[R]
logger_levels[R]
registered_events[R]
Public Class Methods
new()
click to toggle source
# File lib/event_logger_rails/event_logger.rb, line 19 def initialize @logger_levels = logger_levels_from_config @registered_events = registered_events_from_config @last_updated = File.ctime(config_file) end
Public Instance Methods
log(*tags, **params)
click to toggle source
# File lib/event_logger_rails/event_logger.rb, line 25 def log(*tags, **params) reload_config if config_changed? level, event = *tags validate_tags(level, event) logger = ActiveSupport::TaggedLogging.new(Logger.new(output_device)) logger.tagged("#{level.to_s.upcase} | #{DateTime.current} | #{event}") { logger.send(level, **params.as_json) } end
Private Instance Methods
config_changed?()
click to toggle source
# File lib/event_logger_rails/event_logger.rb, line 60 def config_changed? return false unless Rails.env.development? last_updated != File.ctime(config_file) end
config_file()
click to toggle source
# File lib/event_logger_rails/event_logger.rb, line 50 def config_file Rails.root.join('config/event_logger_rails.yml') end
data_from_config()
click to toggle source
# File lib/event_logger_rails/event_logger.rb, line 46 def data_from_config YAML.safe_load(File.read(config_file)).deep_symbolize_keys end
default_event?(event)
click to toggle source
# File lib/event_logger_rails/event_logger.rb, line 87 def default_event?(event) DEFAULT_EVENTS.include?(event) end
event_registered?(event)
click to toggle source
# File lib/event_logger_rails/event_logger.rb, line 82 def event_registered?(event) parsed_event = event.split('.').map(&:to_sym) registered_events.dig(*parsed_event) end
logger_levels_from_config()
click to toggle source
# File lib/event_logger_rails/event_logger.rb, line 38 def logger_levels_from_config data_from_config[:logger_levels].map(&:to_sym) end
output_device()
click to toggle source
# File lib/event_logger_rails/event_logger.rb, line 91 def output_device return $stdout unless Rails.env.test? File.open(File::NULL, 'w') end
registered_events_from_config()
click to toggle source
# File lib/event_logger_rails/event_logger.rb, line 42 def registered_events_from_config data_from_config[:registered_events] end
reload_config()
click to toggle source
# File lib/event_logger_rails/event_logger.rb, line 54 def reload_config @logger_levels = logger_levels_from_config @registered_events = registered_events_from_config @last_updated = File.ctime(config_file) end
validate_event(event)
click to toggle source
# File lib/event_logger_rails/event_logger.rb, line 76 def validate_event(event) return true if event_registered?(event) || default_event?(event) raise EventLoggerRails::Exceptions::UnregisteredEvent.new(unregistered_event: event) end
validate_logger_level(level)
click to toggle source
# File lib/event_logger_rails/event_logger.rb, line 70 def validate_logger_level(level) return true if logger_levels.include?(level) raise EventLoggerRails::Exceptions::InvalidLoggerLevel.new(logger_level: level) end